2012-04-16 17 views
1

値が設定されているときに他のことを行うには、属性 "parent_id"のセッターをオーバーライドしたかっただけです。ActiveRecordモデルの属性セッターは一度も呼び出されません

しかし、セッターは決して呼び出されません。私の目標を達成するためにどのように

(値が疑わとして取得することができ、それは明らかに別の方法でレールによって設定されていますか)?

class Category < ActiveRecord::Base 
    acts_as_tree 
    has_and_belongs_to_many :photos 

    def parent_id=(value) 
    puts "-----> This is never called" 
    write_attribute(:parent_id, value) 
    end 

    def parent_id 
    puts "------> This is called as suspected" 
    read_attribute(:parent_id) 
    end 
end 

私はRubyやレールに新しいですし、私は簡単な事が...事前に

感謝を成し遂げるために私に時間を取って、これらの事についてかなり混乱しています...

答えて

2

によると、 acts_as_treesource、代わりにparent=をオーバーライドしてみてください、私はActiveRecordによって作成された魔法の方法はbelongs_toに提供記号を使用と思います。とにかく、私はあなたのユースケースを知らないが、ActiveRecordメソッドをオーバーライドする代わりにActive Record's filter methodsを使うことを考えている。

+0

フィルタは良いヒントです。これはうまくいくはずです。 – Artinkl

関連する問題