Ruby on rails 许可:名字,但不保存到DB,带有设备注册
我试图在注册帐户时允许:firstname,但参数没有通过,我做错了什么 我已经将:firstname字符串迁移到数据库中Ruby on rails 许可:名字,但不保存到DB,带有设备注册,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,我试图在注册帐户时允许:firstname,但参数没有通过,我做错了什么 我已经将:firstname字符串迁移到数据库中 #受保护 #如果要允许使用额外的参数,请将它们附加到消毒液中。 #def配置\注册\参数 #设计参数消毒器。许可证(:注册,键:[:属性,:名字]) #结束 #如果要允许使用额外的参数,请将它们附加到消毒液中。 #def配置\帐户\更新\参数 #设计\u参数\u消毒器。允许(:帐户\u更新,键:[:属性,:名字]) #结束 在designe中对自定义属性使用sanitize
#受保护
#如果要允许使用额外的参数,请将它们附加到消毒液中。
#def配置\注册\参数
#设计参数消毒器。许可证(:注册,键:[:属性,:名字])
#结束
#如果要允许使用额外的参数,请将它们附加到消毒液中。
#def配置\帐户\更新\参数
#设计\u参数\u消毒器。允许(:帐户\u更新,键:[:属性,:名字])
#结束
在designe中对自定义属性使用sanitize
时,我们可能会遇到一些问题。请跟着这个
. 您已经阅读了此代码,要执行此操作,只需取消注释
配置注册参数
方法并将属性添加到键
,类似于下面的代码
# protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:firstname])
end
# If you have extra params to permit, append them to the sanitizer.
# def configure_account_update_params
# devise_parameter_sanitizer.permit(:account_update, keys: [:attribute, :firstname])
# end
你需要做两件事:
routes.rb
文件中,添加以下内容:注册\u controller.rb
中,允许额外的参数:
类用户::注册控制器<设计::注册控制器
在\u操作之前:配置\u注册\u参数,仅:[:创建]
受保护的
#如果要允许使用额外的参数,请将它们附加到消毒液中。
def配置\注册\参数
设计参数消毒剂。许可证(:注册,密钥:[:名字])
结束
结束
参考:
非常感谢!这就解决了问题@蒂莫菲,我很高兴能帮上忙!接下来,不仅要取消对该方法的注释,还要取消对\u action:configure\u sign\u up \u参数之前的
的注释,仅文件顶部的:[:create]
,这就是我所缺少的。
rails g devise:controllers users -c=registrations
devise_for :users, controllers: { registrations: 'users/registrations' }
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
protected
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:firstname])
end
end