2015-02-07 130 views
2

我正在與Omniauth認證的問題和軌道4由此我得到一個Rails ::加載ActiveModel ForbiddenAttributesError。加載ActiveModel的Rails :: ForbiddenAttributesError設計,Omniauth

我使用gem 'protected_attributes'如此強大的參數不應該是一個問題。

我的用戶模型包含以下內容:

def self.from_omniauth(auth) 
    where(auth.slice(:provider, :uid)).first_or_create do |user| 
     user.username = auth.info.email 
     user.email = auth.info.email 
     user.password = Devise.friendly_token[0,20] 
     user.name = auth.info.name 
    end 
    end 

user.password在那裏只是爲了保持與現有設計身份驗證系統的兼容性。

的AR錯誤表明該行:where(auth.slice(:provider, :uid)).first_or_create do |user|拋出的錯誤。

上述方法被調用來自:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def mavenlink 
    @user = User.from_omniauth(request.env['omniauth.auth']) 
    service = @user.services.initialize_or_update_via_omniauth(request.env['omniauth.auth']) 
    if service && service.save 
     sign_in_and_redirect @user #this will throw if @user is not activated 
     set_flash_message(:notice, :success, :kind => "Mavenlink") if is_navigational_format? 
    else 
     redirect_to root_path, error: "Error signing in with Mavenlink credentials." 
    end 
    end 
end 

這是否與或沒有,我不知道,但我也一直在運行此錯誤:

找不到有效的爲路徑映射「/認證/ mavenlink /回調」

也許沒有關係,但我想我有以防萬一。

任何幫助將不勝感激!

+0

把上面一行'那裏(服務提供商:auth.provider,UID:auth.uid).first_or_create做|用戶|'。這應該夠了吧。 – 2015-02-07 20:08:58

+0

這樣做,謝謝!爲什麼是這個問題? – Adam 2015-02-07 20:17:25

+0

[Rails 4.1.5 omniauth strong parameters]可能重複(http://stackoverflow.com/questions/25399414/rails-4-1-5-omniauth-strong-parameters) – zhurora 2015-09-10 13:39:27

回答

12

幾周前我有同樣的問題,並通過更改下面的行來修復它。基本上你應該明確地將參數傳遞給你的查詢。

where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 

你可以在這裏找到一個Devise issue

+0

謝謝Justin,這真的很有幫助。但我仍不明白爲什麼這個問題沒有出現在本地主機開發中,而只是開始在Heroku中出現。 – user3512640 2016-02-04 20:44:29

相關問題