我正在学习rails并且我试图找到正确的方法来增加"积分"无论范围如何,用户模型上的值。我应该把它放在模型文件或助手......? 我不确定这属于哪里。
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
before_create :create_remember_token
acts_as_messageable
has_secure_password
has_one :profile, dependent: :destroy
has_one :message_constraint, dependent: :destroy
has_many :pictures
validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, on: :create }, uniqueness: {case_sensitive: false}, presence: true
validates :password, length: { minimum: 6 }
def User.new_remember_token
SecureRandom.urlsafe_base64
end
def User.hash(token)
Digest::SHA1.hexdigest(token.to_s)
end
def name
return '#{first_name}'
end
private
def create_remember_token
end
端
答案 0 :(得分:0)
由于这是User表中的字段,因此您无需向User模型添加任何方法。 Rails Magic™的一部分是它将自动拦截方法来获取和设置这些值并为您处理幕后的所有事情。
查看this,似乎您应该能够执行以下操作,因为@user
是User
类的实例
@user.increment(:points)
请注意,您可以一次增加1个以上,可以传入第二个参数,但如果不这样做,则只需默认为1.
编辑:Craig Kochis注意您需要使用增量方法的破坏性!
版本或调用@user.save
来保留更改。