omniauth-facebook
Rails 4 Web サイトでユーザーを認証するために gem を使用しています。
ユーザーが最初に参加したときに、500 の無料ポイントを提供したいと考えています。しかし、モデル メソッドでそのフィールドを 500 に設定すると、ユーザーがログインするたびに 500 ポイントにリセットされます。
class User < ActiveRecord::Base
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.first_name = auth.info.first_name
user.last_name = auth.info.last_name
user.image = auth.info.image
user.location = auth.info.location
user.facebookpage = auth.info.urls.Facebook
user.email = auth.extra.raw_info.email
# This works but every time a user logs in it resets their points.
user.points = 500
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.save!
end
end
end
最初のアカウント作成時にのみ 500 ポイントを割り当てる方法に関する提案。