簡體   English   中英

Rails 4中的strong_parameters gem和自定義設計路線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM