2012-01-31 5 views
0

私は好きなように似たように見えるactiverecordクラスの束を持っています!ポリモーフィックアクティブレコードクラスをどのようにDRYするのですか?

ベースクラスを拡張してメソッドをDRYすることはできますか、それともレールを混乱させるのですか?

多分私はいくつかのものを共有することができますが、他のものはありませんか?

もしそうでなければ、どうすればいいですか?あなたがこの問題のための単一テーブル継承を使用することができます)

class Stage < ActiveRecord::Base 
    acts_as_taggable 
    has_many :services, :as => :serviceable 
    belongs_to :event 
    belongs_to :user 

    after_save :tag! 

    def t(s) 
    self.tag_list.add s 
    self.event.tag_list.add s 
    end 

    # injected to after_save -> http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html 
    def tag! 
    s = self 

     if s.id > 0 then s.t "id-greater-than-0" end 
     if s.id > 0 then s.t "some-stage-specific-stuff" end 

    self.tag_list  
    end 
end 



class Sound < ActiveRecord::Base 
    acts_as_taggable 
    has_many :services, :as => :serviceable 
    belongs_to :event 
    belongs_to :user 

    after_save :tag! 

    def t(s) 
    self.tag_list.add s 
    self.event.tag_list.add s 
    end 

    # injected to after_save -> http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html 
    def tag! 
    s = self 

     if s.id > 0 then s.t "some-sound-specific-stuff" end 

    self.tag_list  
    end 
end 

答えて

関連する問題