从任何控制器增加Rails中模型的值

时间:2014-03-28 02:19:04

标签: ruby-on-rails ruby

我正在学习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

1 个答案:

答案 0 :(得分:0)

由于这是User表中的字段,因此您无需向User模型添加任何方法。 Rails Magic™的一部分是它将自动拦截方法来获取和设置这些值并为您处理幕后的所有事情。

查看this,似乎您应该能够执行以下操作,因为@userUser类的实例

@user.increment(:points)

请注意,您可以一次增加1个以上,可以传入第二个参数,但如果不这样做,则只需默认为1.

编辑:Craig Kochis注意您需要使用增量方法的破坏性!版本或调用@user.save来保留更改。