에 조건이의 내가 있다고 가정 해 봅시다 Item
모델과 has_many :through
협회와 Category
모델 :레일 - 열망로드 has_many : 통해 연결
class Item < ActiveRecord::Base
has_many :category_items
has_many :categories, through: category_items
end
class Category < ActiveRecord::Base
has_many :category_items
has_many :items, through: category_items
end
class CategoryItems < ActiveRecord::Base
belongs_to :category
belongs_to :items
end
지금, 나는 모든 항목을 얻을 것이다 항목에 대한 범위를 갖고 싶어 특정 카테고리에 대한 특정 상태 (상태 속성이 있다고 가정). 카테고리가 "재고 있음"이고 id = 3 인 카테고리에 속한 모든 항목을 가져 오십시오. scope :in_stock_for_category, ->(category) { where(status: SOME_ENUMERATED_VALUE) ....
결과 집합을 특정 카테고리로 제한하기 위해 검색어의 마지막 부분이 누락되었습니다.
감사합니다. 당신이 당신의 items
테이블에 category_id
열이 없기 때문에
감사합니다. 좋은 대답. –
BTW - 여기에 필요한'group ("items.id")'입니까? 그것의 목적은 무엇입니까? –
'join '후에, 항목이 많은 카테고리를 가질 수 있기 때문에 동일한 항목을 가진 여러 행이있을 수 있습니다. 'items.id'로 결과를 그룹화하면 행당 하나의 항목을 얻게됩니다. – Humza