2013-02-09 1 views
-1

나는 간단한 블로그 사이트를 가지고 있으며 특정 카테고리의 게시물을 검색하려고합니다. 나는 다음과 같이 모델을 설정했다. Ruby on Rails에서 특정 카테고리의 게시물을 표시하는 방법

class Post < ActiveRecord::Base 
    has_many :categorizations 
    has_many :categories, through: :categorizations 

    attr_accessible :author, :description, :title, :photo, :category_ids 

    scope :breaking, lambda { |category_ids| 
     joins(:categorizations).where('categorizations.category_id' => category_ids) 
    } 
end 


class Category < ActiveRecord::Base 
    attr_accessible :name 
    has_many :categorizations 
    has_many :posts, :through => :categorizations 
end 

class Categorization < ActiveRecord::Base 

    attr_accessible :category_id, :position, :post_id 

    belongs_to :post 
    belongs_to :category 
end 

나는 포스트 모델의 범위가을 깨는 라고 쓰고, 내가보기에 렌더링하는 방법을 모르겠어요. 또한 컨트롤러가 어떻게 보이고 특정 카테고리 아래에서 게시물을 검색하기 위해 범위를 좁히고 있습니까?

답변

1

변경하는 범위 선언 : 나를 위해, 그들은 더 읽기 보면, 때문에

scope :breaking, lambda { |category_ids| 
    joins(:categorizations).where('categorizations.category_id = ?', category_ids) 
} 

또는

scope :breaking, lambda { |category_ids| 
    joins(:categorizations).where(categorizations: { category_id: category_ids }) 
} 

가 대신 범위에서 람다를 사용하여, 나는 수업 방법을 선호합니다. 또한 기본값을 쉽게 추가 할 수 있습니다.

def self.breaking(category_ids) 
    joins(:categorizations).where(categorizations: { category_id: category_ids }) 
end 
+0

컨트롤러에 대해 무엇이 좋을지 확인하고 감사합니다. – daniel

+1

불행히도, 여기에 대답 할 수 없습니다. 당신은 그것을하기 위해 튜토리얼을 거치거나 다른 질문을해야 할 것입니다. – jvnill

관련 문제