我在 SO 上找到了一些类似的主题,但没有一个对我有用。我在用户模型中有这个:
def email_required?
super && provider.blank?
end
def self.find_for_twitter_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:provider => 'twitter', :uid => data.id).first
user
else # Create a user with a stub password.
user = User.new(:first_name => data.first_name,
:last_name => data.last_name,
:password => Devise.friendly_token[0,20],
:provider => 'twitter',
:uid => data.id,
:terms_of_use => true)
user.save(:validation => false)
end
return user if user
end
但是,当我尝试通过 Twitter 进行身份验证时,我得到了
SQLite3::ConstraintException: users.email may not be NULL: INSERT INTO "users"...
我花了几个小时来解决这个问题,我真的很绝望......我会感谢每一个帮助。