2

我想 update_attributes 然后检查信息是否更改

您可以简单地将此代码传递给rails console现有的 rails + mongoid 项目

class TestModel
  include Mongoid::Document
  include Mongoid::Timestamps
  field :name, type: String
end

test = TestModel.new({:name => "name 1"})
test.save()
=> true

test
=> created_at: 2012-11-14 13:48:26 UTC, updated_at: 2012-11-14 13:48:26 UTC

test.changed?
=> false
test.name_changed?
=> false

test.update_attributes({:name => "name 2"})
=> true

test.changed?
=> false
test.name_changed?
=> false

test
=> created_at: 2012-11-14 13:48:26 UTC, updated_at: 2012-11-14 13:49:23 UTC

我做错了什么还是这是一个错误?

4

1 回答 1

8

它的完美逻辑。

脏方法旨在用于检查对象在保存之前是否已更改。根据定义,持久对象没有待处理的更改。

你应该做:

test.assign_attributes(attributes)
test.changed? #=> true
test.save

请参阅方法定义

于 2012-11-14T14:10:12.950 回答