0

Ruby on Rails 3.0.10を使用しています。:has_many :throughを使用してデータベースからデータを取得するコードをいくつか改良したいと思います協会。モデルで データを取得するために ':has_many:through'関連を改善する

私が持っている:

class Article < ActiveRecord::Base 
    has_many :category_relationships 

    has_many :categories, 
    :through => :category_relationships, 
end 

は、私は次のコードを改善したいと思いますので、上の「ルビーに従うこと(つまり、オブジェクトwhereステートメントを使用して、それらのいくつかは、「フィルタリング」記事のカテゴリを取得します)物事のレールウェイ」:私はそれを行う必要があります\ことができますどのように

@articles.category_relationships.where(:comment_id => @comment.id).map{ |category_relationship| category_relationship.article_category } 

上記のコードを改善するために、@articles.categoriesの関連付けで「機能する」ことはできますか?もしそうなら、どうですか?

答えて

0

あなたは次のようなものを使用できますか?

@articles.categories.where(["category_relationships.comment_id = ?", 
          @comment.id]) 

DRYnessを心配している場合、おそらくどこにモデルを抽出できますか?

class Article < ActiveRecord::Base 
    has_many :category_relationships 

    has_many :categories, 
     :through => :category_relationships do 
    def has_comment(comment_id) 
     where(["category_relationships.comment_id = ?", comment_id]) 
    end 
    end 

end 

@articles.categories.has_comment(@comment.id) 
0

ArticleCategoryRelationshipの間にネストされたhas_many :throughの関係が必要だと思います。ここでは、一度あなたが探しているものを正確に達成するために成功したプラグインがあります。

https://github.com/ianwhite/nested_has_many_through

Thisブログの記事は、他の方法を説明します。

+0

ビルドインRuby on Rails機能を使用するには "好きです"。 – Backo

関連する問題