Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中从Desive向用户添加额外的参数_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 在RubyonRails中从Desive向用户添加额外的参数

Ruby on rails 在RubyonRails中从Desive向用户添加额外的参数,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我想在用户模型中添加属性名。我运行了migration命令,将列添加到数据库中,这很有效。将属性添加到用户本身也起到了作用,但它没有保存在数据库中 如何将属性“name”添加到RegistrationController的注册和帐户更新的必需参数中 这是我的用户模型 class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememb

我想在用户模型中添加属性名。我运行了migration命令,将列添加到数据库中,这很有效。将属性添加到用户本身也起到了作用,但它没有保存在数据库中

如何将属性“name”添加到RegistrationController的
注册
帐户更新
的必需参数中

这是我的用户模型

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  attr_accessor :name
end
在路线上我加了一条线

design_用于:用户、控制器:{registrations:'users/registrations'}

但是用户的姓名仍然没有保存在数据库中。

请检查

您可以尝试以下方法:

class Users::RegistrationsController < Devise::RegistrationsController

 def sign_up_params
  devise_parameter_sanitizer.for(:sign_up).push(:name)
 end

 def account_update_params
   devise_parameter_sanitizer.for(:account_update).push(:name, :email, :password, :password_confirmation, :current_password)
 end
end
类用户::注册控制器<设计::注册控制器
def注册参数
为(:注册)设计参数消毒剂。推送(:名称)
结束
def帐户更新参数
为(:帐户\更新)设计\参数\消毒器。推送(:名称,:电子邮件,:密码,:密码\确认,:当前密码)
结束
结束
请检查

您可以尝试以下方法:

class Users::RegistrationsController < Devise::RegistrationsController

 def sign_up_params
  devise_parameter_sanitizer.for(:sign_up).push(:name)
 end

 def account_update_params
   devise_parameter_sanitizer.for(:account_update).push(:name, :email, :password, :password_confirmation, :current_password)
 end
end
类用户::注册控制器<设计::注册控制器
def注册参数
为(:注册)设计参数消毒剂。推送(:名称)
结束
def帐户更新参数
为(:帐户\更新)设计\参数\消毒器。推送(:名称,:电子邮件,:密码,:密码\确认,:当前密码)
结束
结束

将其添加到您的
应用程序控制器
中,以配置
注册
登录
帐户更新
参数

def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name,:email, :password, :password_confirmation) }
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :username, :anonymous, :email, :password, :password_confirmation,:reset_password_token) }
end
并将
添加到
ApplicationController
之前,如:

before_filter :configure_permitted_parameters, if: :devise_controller?

将此添加到
应用程序控制器
以配置
注册
登录
&
帐户更新
参数

def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name,:email, :password, :password_confirmation) }
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :username, :anonymous, :email, :password, :password_confirmation,:reset_password_token) }
end
并将
添加到
ApplicationController
之前,如:

before_filter :configure_permitted_parameters, if: :devise_controller?

它是通过脚手架或手动创建的?设备是从脚手架创建的?设备是通过脚手架或手动创建的?设备是从脚手架创建的我收到此错误
没有为用户提供消毒液
。在这个答案中,尝试将
参数从
:user
更改为
:sign\u
:帐户更新
@sajan感谢您指出这一点。我已经编辑了答案。我得到了这个错误
没有为用户提供消毒剂
。在这个答案中,请尝试将
参数从
:user
更改为
:sign\u up
:account\u update
@sajan感谢您指出这一点。我已编辑了答案。似乎只有在我删除了在用户模型中添加的属性后才起作用。。但它确实如此有效,谢谢!似乎只有在我删除了在用户模型中添加的属性后才起作用。。但它确实如此有效,谢谢!