2014-04-26 68 views
0

我想整合omniauth-facebook到我的網站,但我不斷收到以下err(或類似的東西)回調:Devise/Facebook的回調NoMethodError(未定義的方法`name ='爲#<用戶:0x007

NoMethodError(未定義的方法name=' for #<User:0x007f507c6f9158>): app/models/user.rb:14:in塊find_for_facebook_oauth' 應用程序/模型/ user.rb:9:find_for_facebook_oauth' app/controllers/users/omniauth_callbacks_controller.rb:4:in Facebook的

這裏是我的user.rb:

 class User < ActiveRecord::Base 
     # Include default devise modules. Others available are: 
     # :confirmable, :lockable, :timeoutable and :omniauthable 
     devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable, 
      :confirmable, :omniauthable, :omniauth_providers => [:facebook] 

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

    end 

不知道爲什麼它是抱怨ABO ut程序的「名稱」 - 它不應該在尋找一個領域?任何幫助讚賞。

回答

1

您在

user.name = auth.info.name 

越來越undefined method name=' for #<User:0x007f507c6f9158>錯誤它只是意味着你沒有在users表命名name。因此,User模型中不存在setter方法name=(方法名稱末尾的註釋=)。

如果您打算在users上使用name字段,請將其添加到users表中。

  • 通過以下命令

    rails generate migration AddNameToUsers name:string 
    
  • 運行rake db:migrate

+0

我添加的名稱字段遷移創建於users表中增加name場遷移文件,但我仍然得到相同的錯誤。我做一個heroku運行更多的數據庫/ schema.rb和名稱字段不顯示。我做heroku pg:重置DATABASE和一個heroku運行rake db:migrate併產生一個錯誤 - PG :: DuplicateColumn:ERROR:關係「users」的列「name」已經存在。 – user3570192

+0

在添加數據庫中的字段後重新啓動服務器,然後檢查是否出現錯誤。讓我知道。 –

+0

我做了一個heroku重新啓動,看起來像它仍然不存在 - 當我嘗試Facebook鏈接(用戶/ auth/facebook)時,它將我路由到sign_in :( – user3570192

相關問題