0

Я следую этому руководству: http://emumair.wordpress.com/2011/03/17/social-network-authentication-with-omniauth-and-authlogic/. Я прошел через все это, и я получаю эту ошибку:omniauth с автологической проблемой с методом аутентификации

undefined method `authentications' for #User<User:0x54cd8d8> 

Его неисправного в контроллере: приложение/контроллеры/authentications_controller.rb: 21: в `создать ':

user.authentications.build(:provider => omniauth['provider'], :uid => omniauth['uid']) 

Нужно ли добавлять к модели пользователя отношения для аутентификации?

Моя модель пользователя в настоящее время выглядит следующим образом:

class User < ActiveRecord::Base 
acts_as_authentic 

def apply_omniauth(omniauth) 
self.email = omniauth['user_info']['email'] 

# Update user info fetching from social network 
case omniauth['provider'] 
when 'facebook' 
# fetch extra user info from facebook 
when 'twitter' 
# fetch extra user info from twitter 
end 
end 
end 

Мой файл authentication.rb является:

class Authentication < ActiveRecord::Base 
belongs_to :user 
validates :user_id, :uid, :provider, :presence => true 
validates_uniqueness_of :uid, :scope => :provider 
end 
+0

Нужно ли выполнить миграцию, чтобы создать таблицу аутентификации? –

+0

Да, я создал миграцию, показанную в учебнике, и запустил ее. – turbo2oh

ответ

0

Вы должны добавить

class User < ActiveRecord::Base 
    has_many :authentications 

Также отметим, что OmniAuth ['user_info'] ['email'] изменен на omniauth ['info'] ['email']