2011-07-05 4 views
2

モデルポストhas_many関係のメソッドを作成しますか?

has_many :comments 
has_mant :tags 

def comments? 
    !self.comments.empty? 
end 

def tags? 
    !self.tags.empty? 
end 

特定の投稿を確認するには、任意のコメントやタグを持っています。私はインスタンスメソッドのコメントを書いていますか?タグ?投稿に基づいて真偽を返すものは、コメントとタグがあるかどうかです。

メソッドに '?'を付けるすべてのhas_many関係のメソッドを記述したいと思います。

だから将来私は10とhas_manyの関係がpostよりも、relation1のために10のメソッドを書く必要はありません、relation2?

任意のアイデア。

答えて

5

ActiveRecordのは、いろいろなことの場合と同様に、あなたが行うことができます、あなたが動的に定義されたメソッドをしたい場合:これは、方法:x?:y?を作成します

class Model 
    has_many :x 
    has_many :y 
    self.reflect_on_all_associations(:has_many).each do |association| 
    define_method "#{association.name}?" do 
     self.send(association.name).any? 
    end 
    end 
end 

。これをモジュールに入れて、必要なモデルに組み込むことができます。

編集:any?は、コードの!

+0

empty?おかげと同じです。どうすればモジュールの中に書くことができますか? –

関連する問題