我正在使用omniauth-facebook
gem 对我的 Rails 4 网站上的用户进行身份验证。
当用户第一次加入时,我想给他们 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 点的任何建议。