![](/img/trans.png)
[英]allow set_locale with strong_parameters gem & devise
[英]strong_parameters gem and custom devise routes in Rails 4
我已經升級到Rails 4,並且走了strong_parameters路線。 問題是它拋出以下錯誤,指向我用於Devise的客戶注冊控制器:
ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):
app/controllers/users/registrations_controller.rb:89:in `build_resource'
app/controllers/users/registrations_controller.rb:6:in `create'
第6行是從create
方法調用的build_resource
,而build_resource是庫存標准的:
def build_resource(hash=nil)
hash ||= resource_params || {}
self.resource = resource_class.new_with_session(hash, session)
end
它正在處理的模型是User
。 我嘗試了Ryan Bates創建允許的params類的方法:
class PermittedParams < Struct.new(:params, :current_user)
def user
params.require(:user).permit(*user_attributes)
end
def user_attributes
[:name, :username, :provider, :email, :remember_me,
:rememberable_token, :password, :password_confirmation]
end
我不確定如何在注冊控制器中處理此問題。
Devise剛剛發布了與Rails 4兼容的新rc gem。
gem 'devise', '~> 3.0.0.rc'
其他選擇,您可以使用來自devise master github repo的'rails4'分支。
gem 'devise', github: 'plataformatec/devise', branch: 'rails4'
當然,不要忘記在Gemfile更新后進行“捆綁安裝”。
我發現您必須將其添加到注冊控制器:
class Users::RegistrationsController < Devise::RegistrationsController
def resource_params
params.require(:user).permit(:name, :email, :password, :password_confirmation) # And whatever other params you need
end
private :resource_params
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.