我的用户模型中有一个方法(使用设计和可确认)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
吗?如果是这样,为什么?