Как мне вернуть объект из метода в Rails 3? - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть следующее в моем обратном вызове Omniauth:

@user = User.find_for_linked_in_oauth(env["omniauth.auth"], current_user)

Я ожидаю, что в любом случае получить объект пользователя.Ее метод пользователя.Сейчас я тестирую случай, когда не может найти существующего пользователя, поскольку он еще не создан:

   def self.find_for_linked_in_oauth(omniauth_hash, signed_in_resource=nil)
     debugger
     #omniauth_hash is a hash passed in from env["omniauth_hash"] by callback controller
     linkedin_uid = omniauth_hash['uid']
       debugger
       if user = User.find_by_linkedin_uid(linkedin_uid)
          debugger 
          user
       else # Create an user with a stub password.
         #redirect to a page to ask for an email address and display information
         #User.create!(:email => "token@email.com", :linkedin_uid => linkedin_uid, :password     => Devise.friendly_token[0,20]) 
         user = User.new
         user.first_name = omniauth_hash['user_info']['first_name']
         user.last_name = omniauth_hash['user_info']['last_name']
         user.linkedin_uid = linkedin_uid

         user
         debugger
      end

В настоящее время с помощью отладчика я возвращаю '1'в качестве значения для p @ user.

Я хочу, чтобы вновь созданный объект пользователя был передан обратно, чтобы я мог затем попросить текущего пользователя добавить дополнительную информацию перед его сохранением.

Почему яне получить вновь созданного пользователя в качестве значения @user?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2011

попробуйте поменять местами user и debugger, чтобы получилось user

 19   def self.find_for_linked_in_oauth(omniauth_hash, signed_in_resource=nil)
 20     debugger
 21     #omniauth_hash is a hash passed in from env["omniauth_hash"] by callback controller
 22     linkedin_uid = omniauth_hash['uid']
 23       debugger
 24       if user = User.find_by_linkedin_uid(linkedin_uid)
 25          debugger 
 26          user
 27       else # Create an user with a stub password.
 28         #redirect to a page to ask for an email address and display information
 29         #User.create!(:email => "token@email.com", :linkedin_uid => linkedin_uid, :password     => Devise.friendly_token[0,20]) 
 30         user = User.new
 31         user.first_name = omniauth_hash['user_info']['first_name']
 32         user.last_name = omniauth_hash['user_info']['last_name']
 33         user.linkedin_uid = linkedin_uid
 34 
 36         debugger
 35         user
 37      end
0 голосов
/ 03 апреля 2011

Может случиться так, что оператор отладчика все испортит.Попробуйте поменять операторы вроде:

debugger
user

в конце вашей функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...