diff --git a/lib/lotus/entity/dirty_tracking.rb b/lib/lotus/entity/dirty_tracking.rb index 831da0d8..963cc3e2 100644 --- a/lib/lotus/entity/dirty_tracking.rb +++ b/lib/lotus/entity/dirty_tracking.rb @@ -44,10 +44,12 @@ module ClassMethods # @api private def define_attr_accessor(attr) attr_reader(attr) - define_method "#{attr}=" do |val| - _attribute_changed(attr) if val != __send__(attr) - instance_variable_set("@#{attr}", val) - end + class_eval %{ + def #{ attr }=(value) + _attribute_changed(:#{ attr }) if value != @#{ attr } + @#{ attr } = value + end + } end end