Omniauth проблемы в рельсах 3.1.0 - PullRequest
       21

Omniauth проблемы в рельсах 3.1.0

0 голосов
/ 04 сентября 2011

Я следовал за актером фильма Райаном Бейтсом, и все работает нормально, кроме случаев, когда я меняю свои методы, как показано ниже:

от

<code>      def create
       omniauth = request.env["omniauth.auth"]
       current_user.authentications.create(:provider => omniauth['provider'], :uid =>         omniauth["uid"])
       flash[:notice] = "Authentication successful"
       rescue Exception => e
       # Just spit out the error message and a backtrace.
       render :text => "<html><body><pre>" + e.to_s + "
<час />
" +    e.backtrace.join("\n") + "
" конец

до

<code>  def create
    omniauth = request.env["omniauth.auth"]
    current_user.authentications.create(omniauth['provider'], omniauth["uid"])
    flash[:notice] = "Authentication successful"
  rescue Exception => e
    # Just spit out the error message and a backtrace.
    render :text => "<html><body><pre>" + e.to_s + "
<час />
" + e.backtrace.join("\n") + "
" конец

я продолжаю получать неопределенный метод stringify_keys' for "twitter":String но все работает отлично с первого раза. любые идеи здесь

1 Ответ

1 голос
/ 04 сентября 2011

Вы изменили:

current_user.authentications.create(:provider => omniauth['provider'], :uid =>         omniauth["uid"])

до:

current_user.authentications.create(omniauth['provider'], omniauth["uid"])

Вы получите эту ошибку в любом приложении rails, так как вы не указываете, в какие поля следует присваивать значения. Пример (из одного из моих приложений):

ruby-1.9.2-p180 :002 > User.create("a", "b")
NoMethodError: undefined method `stringify_keys' for "a":String

Я думаю, вы имели в виду следующее:

user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) || User.create_with_omniauth(auth)
...