2013-02-05 2 views
0

레일즈 3.2와 몽고이드를 사용하고 있으며 간단한 구매 연결을 설정해야합니다. 현재 내가 가진 :Rails 몽고 구매자, 아이템, 구매 모델 조합

class Item 
has_many :purchases 

class Buyer 
has_many :purchases 

class Purchase 
has_one :buyer 
has_one :item 

나는 현재 달성 주어진 구매자가 구입 한 모든 항목 호출 할 수 싶습니다 데프 purchased_by (buyer_id) 항목을 = [] IDS = 역할 .find (buyer_id) .purchase_ids Item.each do | i | 항목 < < 난 경우 (i.purchase_ids & ID를) .length> 0 끝 항목 끝

그러나이 끔찍하게 비효율적 인 것 같다. 이견있는 사람?

답변

0

이 시도 :

class Buyer 
    def items_purchased 
    purchases.collect(&:item) 
    end 
end 

그런 다음 객체 buyer를 주어, 당신은 당신이 원하는 것을 얻을 수 있습니다 호출하여 :

buyer.items_purchased 
+0

니스. 완벽하게 작동합니다. 이제 반대 방법을 수행하고 구매하지 않은 항목 만 표시하는 방법을 알아야합니다. Buyer.items_not_purchased ... 이것이 최상의 데이터 구조인지 궁금합니다. – ttringas