2012-03-06 14 views
2

ActiveRecordのは、これらの非持続上の同じメソッドまたは「仮想」の属性を定義するためのRailsの方法はある属性ヘルパーなど_?ような方法と「汚い」方法(_changed?などに)仮想属性にActiveRecord属性ヘルパーメソッドを追加するにはどうすればよいですか?

を提供していますか?

私のような何かを望んでいる:

class MyClass < ActiveRecord::Base 

    some_macro :my_attribute 

end 


$ @my_class = MyClass.new 
$ @my_class.my_attribute? # => false 
$ @my_class.my_attribute_changed? # => false 

答えて

1

まあこれは確かに調べることは興味深いものでした。どうやらこれを行うにまっすぐ進む方法がありません...ここで私は

From 2009

From 2011 - reinforces the 2009 postが見つかりましたが、それは少しきれいになり二つのことがあります。属性ハッシュを更新するモジュールを作成します。ブランドンワイスのポストから:

# 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 

あり、このプラグインmentioned hereもあるが、私はそれはあなたのためですか有益かわかりません。

+0

ありがとう@ScottJShea - これはネイティブサポートがないことを悲しい... ... – bodacious