【发布时间】:2013-09-30 09:29:45
【问题描述】:
我在这上面花了几个小时,所以我在这里。从 Ryans Railscast 开始,我决定将 twitter 登录添加到我的 rails / devise 应用程序中。我关注了一段时间,遇到了问题并解决了各种问题,直到我到达这里:单击“使用 twitter 登录”时,我被重定向到那里,返回后,我收到以下问题:
ActiveRecord::StatementInvalid in Users::OmniauthCallbacksController#twitter
SQLite3::SQLException: 没有这样的列:users.provider: SELECT "users".* FROM "users" WHERE "users"."provider" = 'twitter' AND "users"."uid" = '20323034' ORDER BY "users"."id" ASC LIMIT 1
这个问题与其他 stackoverflow 问题非常接近,除了他们使用的是 facebook 登录而不是 twitter。查看最佳答案的最佳评论:
Devise, Omniauth and Facebook integration session error
请指教,谢谢!
路线: devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "registrations" } 做
获取“信息/联系方式” 获取“信息/关于” 获取“信息/着陆” 获取“信息/测试” 获取 '/users/sign_out' => 'devise/sessions#destroy'
根“信息#登陆” 结束
资源:事件做 资源:注册 结尾 结束
宝石文件:
gem 'zurb-基础'
宝石'设计'
gem 'omniauth-twitter'
gem 'omniauth'
宝石'oauth2'
【问题讨论】:
-
您的用户表中有
provider的列吗? -
您是否曾在某一时刻运行
rake db:migrate来添加它? -
运行 rake,没有添加任何内容。我对添加列感到紧张,以防我不需要它并且还有其他问题。看起来像一个兔子洞。
-
嗯.. 这很简单:
SQLite3::SQLException: no such column: users.provider你应该标记他的答案。
标签: ruby-on-rails devise oauth-2.0 twitter-oauth