我正在尝试添加字段'first name','last name'和'phone'。但是,在重新访问本地主机时,我总是会收到此错误:
NoMethodError in Devise::RegistrationsController#new
undefined method `configure_permitted_parameters' for #<Devise::RegistrationsController:0x00000101fcd008>
这就是我所做的:
首先,我创建了一个注册控制器:
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters, :only => [:create]
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :phone, :email, :password, :password_confirmation) }
end
end
然后,我跑了:
rails g migration AddFieldsToUsers first_name:string last_name:string phone:int
接下来是:
rake db:migrate
在终端......
然后我去了 t.string :first_name,
t.string :last_name,
t.integer :phone,
在设计中创建用户迁移文件。
我也尝试在addFieldsToUsers迁移文件中将add_column替换为t.string:
class AddFieldsToUsers < ActiveRecord::Migration
def change
t.string :users, :first_name, :string
t.string :users, :last_name, :string
t.integer :users, :phone, :int
end
end
如果有人可以帮助解决这个问题,我将非常感激。谢谢。
答案 0 :(得分:1)
首先 - about migration:
class AddFieldsToUsers < ActiveRecord::Migration
def change
add_column :users, :first_name, :string
add_column :users, :last_name, :string
add_column :users, :phone, :integer
end
end
$ rake db:migrate
其次 - 关于rails4中的权限:
这个有用的https://stackoverflow.com/a/19793371/3563993 和this
<强> application_contoller.rb 强>
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
...
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :first_name, :last_name, :fone) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :first_name, :last_name, :fone)
end
end
答案 1 :(得分:0)
在attr_accessible:用户类之后放置first_name,last_name,phone。 如果您使用的是rails 3
答案 2 :(得分:0)
您应该根据设计documentation在应用程序控制器中添加操作configure_permitted_parameters
。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
您的错误直接表明您没有configure_permitted_parameters
方法进行新操作。