Ну, это, безусловно, было интересно исследовать. Видимо, нет прямого способа сделать это ... вот две вещи, которые я нашел
С 2009 г.
С 2011 года - усиливает пост 2009 года , но делает его немного чище. Вы создаете модуль, который обновляет хэш атрибута. Из поста Брэндона Вайса:
# app/models/dirty_associations.rb
module DirtyAssociations
attr_accessor :dirty
def make_dirty(record)
self.dirty = true
end
def changed?
dirty || super
end
end
# app/models/lolrus.rb
class Lolrus
include DirtyAssociations
has_and_belongs_to_many :buckets,
:after_add => :make_dirty,
:after_remove => :make_dirty
end
Существует также этот плагин , упомянутый здесь , но я не уверен, насколько он полезен для вас.