我在我的用户模型中有一个方法(使用 devise 和 confirmable),叫做 new_with_session
,这是Omniauth + Devise所需的(https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview):
def self.new_with_session(params, session)
super.tap do |user|
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"] || session["devise.google_data"] && session["devise.google_data"]["extra"]["raw_info"]
user.email = data["email"]
end
end
end
用户可以使用Google或Facebook登录,我正在使用此行来保存正确的user.email
:
if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"] || session["devise.google_data"] && session["devise.google_data"]["extra"]["raw_info"]
但我认为这不是正确的方法,所以...
- 你知道比使用
||
运算符构建user.email
更好的方法吗? - 如果我想从 Google/Facebook 保存更多数据,比如用户名,我应该将其添加到自定义的
new_with_session
中吗?如果是,为什么?