Rails update_attributes验证中的属性

时间:2017-11-22 18:49:19

标签: ruby-on-rails rails-activerecord

我希望得到update_attributes中传递的所有属性,即使它们没有改变。

我的验证中有逻辑,如果有人通过X,我应该跳过逻辑。

在Rails 4.2.10中,我使用了original_raw_attributes,但现在我正在升级Rails。

任何想法?

1 个答案:

答案 0 :(得分:0)

我没有看到访问未更改属性的方法。解决方法可能是拦截update_attributes并记住参数,例如:

class User < ApplicationRecord
  def update_attributes(attrs)
    @original_raw_attributes = attrs
    super
  end
  before_validation do
    pp @original_raw_attributes if @original_raw_attributes
  end
end

使用它来显示未更新的属性的示例:

>> User.last.name
=> "tomc"
>> User.last.update_attributes name: "tomc"
{:name=>"tomc"}

你可能想把它放在Concern中,但你明白了。