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

관련 문제