gpt4 book ai didi

ruby-on-rails - 在rails 4中设计用户模型中保存自定义字段

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:56 24 4
gpt4 key购买 nike

我设计了一个用户模型并向其添加了额外的字段。当我创建和帐户时,一切正常,只有电子邮件、pw 和 pw conf。

然后我想让用户进入编辑页面并填写可选的附加字段。但是,当他们提交时,所有内容都保存为 nil。

 class RegistrationsController < Devise::RegistrationsController

before_action :configure_permitted_parameters, if: :devise_controller?

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in){ |u| u.permit(:email, :password) }
devise_parameter_sanitizer.for(:sign_up){ |u| u.permit(:name, :username, :about, :email, :password, :password_confirmation)}
devise_parameter_sanitizer.for(:account_update){ |u| u.permit(:name, :username, :about, :email, :password, :password_confirmation) }
end

def update
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
if resource.update_with_password(user_params)
if is_navigational_format?
flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ? :update_needs_confirmation : :updated
set_flash_message :notice, flash_key
end
sign_in resource_name, resource, :bypass => true
respond_with resource, :location => after_update_path_for(resource)
else
clean_up_passwords resource
respond_with resource
end
end

def user_params
params.require(:user).permit(:email, :password, :current_password, :password_confirmation, :name, :username, :about)
end
end

我在控制台中得到了这个输出,

 ActiveRecord::SchemaMigration Load (0.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by Devise::RegistrationsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"EG8FtCTBohuG2uwUvIqmY7KTsmYY1nMAXqTfc0Li+eQ=",
"user"=>{"email"=>"a@a.com", "name"=>"Aaron", "username"=>"", "about"=>"",
"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "current_password"=>"[FILTERED]"}, "commit"=>"Update"}

User Load (2.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
Unpermitted parameters: name, username, about

但是当我在控制台(使用 User.last)中 checkin 时,数据库中没有保存任何内容。我被卡住了,看了看,不知道出了什么问题......

最佳答案

在 Rails4 中我们有强大的参数所以请

将以下行添加到您的 application_controller.rb

before_filter :configure_devise_params, if: :devise_controller?
def configure_devise_params
devise_parameter_sanitizer.for(:sign_up) do |u|
u.permit(:first_name, :last_name, :gender, :email, :password, :password_confirmation)
end
end

关于ruby-on-rails - 在rails 4中设计用户模型中保存自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18413005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com