mongoid update_attributes changed?

activerecord, mongodb, mongoid, ruby, ruby-on-rails

Solution

Its perfectly logic.

Dirty methods are meant to be used to check if an object has changed before it's saved. By definition a persisted object has no pending changes.

You should do:

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

See method definition.

Problem

I want to update_attributes and than check if information is changed You can simply pass this code to `rails console` in existing rails + mongoid project ``` 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 ``` Am I doing something wrong or this is a bug?

Original source