我正在使用这个Railcast 剧集中的代码,代码在Github中。
不幸的是,我得到了错误:(The change you wanted was rejected.
具有讽刺意味的是,我已经实现了好几次,而且以前从未发生过)
在 Heroku 的日志中,我得到:
2013-07-13T09:06:49.096663+00:00 app[web.1]: Completed 422 Unprocessable Entityin 83ms
2013-07-13T09:06:49.099178+00:00 app[web.1]:
2013-07-13T09:06:49.099178+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Email can't be blank):
2013-07-13T09:06:49.099178+00:00 app[web.1]: app/models/user.rb:14:in `from_omniauth'
2013-07-13T09:06:49.099178+00:00 app[web.1]:
2013-07-13T09:06:49.099178+00:00 app[web.1]:
2013-07-13T09:06:49.099178+00:00 app[web.1]: app/models/user.rb:20:in `block in from_omniauth'
2013-07-13T09:06:49.099178+00:00 app[web.1]: app/controllers/omniauth_callbacks_controller.rb:3:in `all'
我认为这是电子邮件验证失败造成的错误。由于在我的from_omniauth
方法中,我不检索电子邮件。
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.nickname
user.image = auth.info.image
user.save!
end
end
验证失败是否会阻止user.save!
?我以后不能在omniauth_callbacks 中使用它吗?