0
我正在为Devise进行Facebook身份验证,我偶然发现了一个问题 - 何时会尝试使用已经在系统中的Facebook电子邮件注册某人,我收到一个错误(部分正确)。Rails - 如何避免在模型中创建记录时出现验证错误?
我需要将该用户重定向回主页,并在那里打印出此问题,但目前我将此消息打印为错误(在本地主机上)。
以下是我正在做的是(用户模型):
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:provider => 'facebook', :uid => data.id).first
user
else # Create a user with a stub password.
user = User.create!(:first_name => data.first_name,
:last_name => data.last_name,
:email => data.email,
:password => Devise.friendly_token[0,20],
:provider => 'facebook',
:uid => data.id,
:terms_of_use => true)
end
return user if user
end
如何将用户重定向哪里会被打印出来的验证消息的网页上?
感谢
你有没有听说过first_or_create?这段代码很糟糕。 –
我知道这太糟糕了。我想给他一个关于如何进行错误和重定向的想法,而不是重构。因为这是他所问的。 – AnkitG
@MichaelSzyndel,增加了'first_or_create';) – AnkitG