ここSOでいくつかの同様のトピックを見つけましたが、どれもうまくいきませんでした。私はUserモデルにこれを持っています:
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"...
私はこの問題を解決するのに数時間を費やしましたが、本当に絶望しています...あらゆる助けに感謝します.