当前位置: 首页 > 知识库问答 >
问题:

Rails 5在Devise中为“用户”添加一些属性

梁建德
2023-03-14

我正在使用Rails 5.1,我添加了用于用户身份验证的设计。我在表格中添加了一些额外的属性。通过 ajax 创建新用户后,用户已创建,但缺少某些属性。我检查了日志,设计不会在插入查询中发送这些列。

首先,我将device_parameter_sanitizer添加到应用程序控制器:

before_action :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:email,:password1,:password2,:title,:phone, :first_name , :last_name, :postalcode, :address,:coordinate, :latitude, :longitude])
end

我在我的用户模型中添加了attr_accessor:

attr_accessor:password1、:password2、:phone、:postalcode、:first_name、:last_name、:address

在注册控制器中结束以下代码my create方法:

    @user = User.new
    @user.email = params[:sign_up][:email] 
    @user.password = params[:sign_up][:password1]
    @user.password_confirmation =params[:sign_up][:password2]
    @user.phone = params[:sign_up][:phone]
    @firstname = params[:sign_up][:first_name]
    @user.first_name = @firstname
    @user.last_name = params[:sign_up][:last_name]
    @user.postalcode = params[:sign_up][:postalcode]


    @coordinate = Geocoder.coordinates(params[:sign_up][:postalcode])

    @user.coordinate = @coordinate
    @user.latitude = @coordinate[0]
    @user.longitude = @coordinate[1]
    @user.address = params[:sign_up][:address]



    @user.valid?
    if @user.errors.blank?

      @user.save
    end

我在我的控制台中看到以下日志:

SQL (0.5 毫秒) 插入“用户”(“电子邮件”、“encrypted_password”、“created_at”、“updated_at”、“user_role”、“纬度”、“经度”、“坐标”) 值($ 1, $2, $3, $4, $5, $6, $7, $8) 返回“id” [[“电子邮件”, “jd@gmail.com”], [“encrypted_password”, “$2a$11$Rsn8pM0wVfiRAHwMQ/8YTeYGDn6qzAvZEFPJjqq4Ri.xZfGdof9f6”], [“created_at”, “2017-11-13 12:07:27.781262”], [“updated_at”, “2017-11-13 12:07:27.781262”], [“user_role”, “t”], [“纬度”, 53.3960084], [“经度”, -2.929237], [”坐标“, ”[53.3960084, -2.929237]“]]

为什么我的代码将坐标、纵向和 lattitude 属性保存到 db 而不保存first_name、last_name和地址属性?我该如何解决这个问题?最好

已编辑:我的js代码:

            $.ajax({
            type: "POST",
            url: "/users",
            data: {
                sign_up: {
                    first_name: $('#firstname').val(),
                    last_name: $('#lastname').val(),
                    email: $('#email').val(),
                    password1: $('#password1').val(),
                    password2: $('#password2').val(),
                    postalcode: $('#postalcode').val(),
                    phone: $('#phone').val(),
                    website: $('#website').val(),
                    title: $('#title').val(),
                    address: $('#address').val(),
                }
            },

我的用户 Shcema

create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.inet "current_sign_in_ip"
t.inet "last_sign_in_ip"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "superadmin_role"
t.boolean "user_role"
t.string "first_name"
t.string "last_name"
t.string "phone"
t.string "post_code"
t.float "latitude"
t.float "longitude"
t.string "coordinate"
t.string "address"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true

终止

编辑2:我做了测试:

 @u = User.create(first_name: params[:sign_up][:first_name], email: 
 params[:sign_up][:email], password: params[:sign_up][:password1])
 @u.save!

而德的结果是

参数:{"sign_up"=

共有1个答案

姬泰
2023-03-14

从模型中删除attr_accessor

 类似资料:
  • 问题内容: 如何在jQuery中的特定HTML标签中添加属性? 例如,像下面这样的简单HTML: 然后添加一个属性disable =“ true”,如下所示: 问题答案: 您可以像这样添加属性: 但是,对于和这样的DOM属性,正确的方法(从JQuery 1.6开始)是使用。

  • 我需要在MCV4中的web-api返回一个http状态给用户(在调用post/get方法之后)。 (MCV4的新项目),并选择:WEB-API。 我有VS2010,我查看了从Web Api控制器返回http状态代码的示例,但它对我不起作用。 null 对于以下代码: 我将上面的内容放在类型的类中:apicontroller-responsetype是未知的,实际上,在代码中,我添加了: 但是,re

  • 作为日志记录工具,我使用Log4j2,这是通过使用系统属性(/VM参数)调用的,使用: 为了编译我的项目,我使用Maven并创建exe文件Launch4j(Plugin:com.akatast.Maven.plugins.Launch4j)。 我的pom中的插件定义。xml如下所示: 我现在的问题是: 如何设置log4j2集成的系统属性?! 如果试图用“opt”将其置于括号中(http://lau

  • 问题内容: 具体来说,我应该从终端运行哪些命令? 问题答案: 没有主目录 带主目录 然后设置密码 然后设置外壳

  • 问题内容: 我当前的目标是添加一个新的客户属性(具有类型),该属性应显示为带有预定义选项的选择(已从模型加载,其中的条目可在后端进行编辑)。我正在努力正确使用方法,尤其是指定正确的源选项。另一个问题是新属性未保存到eav_entity_attribute表中 我使用的是Magento CE 1.5.1.0 问题答案: 这是渲染器基本属性的代码: 添加属性的不寻常步骤是,这似乎是客户属性所独有的。没