新增模型關注 omniauth 屬性 concern.rb
module OmniauthAttributesConcern
extend ActiveSupport::Concern
module ClassMethods
Add Methods here
end
end
在這個問題中,我們可以為每個社交媒體建立方法來獲取和儲存屬性。
def twitter params
(params['info']['email'] = "dummy#{SecureRandom.hex(10)}@dummy.com") if params['info']['email'].blank?
attributes = {
email: params['info']['email'],
first_name: params['info']['name'].split(' ').first,
last_name: params['info']['name'].split(' ').last,
username: params['info']['nickname'],
password: Devise.friendly_token
}
create(attributes)
end
注意:如果使用者在 Twitter 上確認了他/她的電子郵件,則 Twitter 僅返回電子郵件地址; 否則返回
nil
值。
-
我們可以像上面新增 Twitter 一樣新增其他社交媒體帳戶。
-
來自社交媒體帳戶的個人資料影象也可以被提取,並將作為傳遞
remote_image_url: params['info']['image']
注意:上面的示例適用於 CarrierWave gem,而
remote_image_url
中的'image'
是 DB 列。你可以使用任何其他寶石並將params['info']['image']
傳遞給它。