如何在AR中保存新的属性之前获取属性的当前值?

时间:2014-11-11 22:37:23

标签: activerecord ruby-on-rails-4

我有一个具有这些属性的模型:

  1. some_number
  2. some_string
  3. 我想在some_string中添加一些值,具体取决于some_number的当前值和更新时some_number的新值。

    示例:

    当前some_number 4

    some_number的新(已更新)值 5

    我希望在覆盖4+5之前将some_string字符串放入some_number

    我怎样才能使它有效?

2 个答案:

答案 0 :(得分:2)

如果我需要根据更新事件I上的其他属性值修改某些属性,请执行以下操作:

class Thing < ActiveRecord::Base
    before_update :modify_some_string
    protected
    def modify_some_string
            # some actions with self.some_string and self.some_number
            # and self.some_string_was and self.some_number_was
    end
end

答案 1 :(得分:1)

很难说明您提出的问题,但假设您希望在some_number结束时some_string的当前值...

class Thing < ActiveRecord::Base
  def initiaize
    @numbers = []
    super
  end

  def some_number=(value)
    @numbers << value
    write_attribute :some_string, @numbers.join('+')
    super
  end
end