0
我在這裏發現了一些類似的主題,但沒有人爲我工作。 我有這樣的用戶型號:Rails + Devise + OmniAuth:Twitter身份驗證和跳過電子郵件
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"...
我花了解決這一問題的幾個小時我真的很絕望......我會感激每一個幫助。
我想用更乾淨的方式來做到這一點。 – user984621
將驗證添加到您的模式。您可以通過遷移來更改列屬性,但在我看來,這是一個更糟糕的主意。 – user2641326