2011-04-29 6 views
5

Rails의 위시리스트 관계는 무엇입니까? 사용자 위시리스트의 일종의 응용 프로그램을 구축

사용자는 하나 개의 위시리스트를 가질 수 있으며, 항목

내가 필요한 사이트의 다른 사용자에 속하지만 그 위시리스트 기존 항목을 추가 할 수 있습니다 current_user.wishlist.items를 통해 위시리스트 항목에 액세스 할 수 있습니다. (현재는 Devise를 사용하므로 current_user를 사용할 수 있습니다.)

wishlist_id 열을 items 테이블에 추가하지만 아이템은 여러 개의 위시리스트에 속할 수 있습니다. .

이 간단한 것 같지만 메신저는 관계

답변

5
class User < ActiveRecord::Base 

    has_one :wishlist # or belongs_to :wishlist, it depends which you prefer 

end 

class Wishlist < ActiveRecord::Base 

    belongs_to :user 
    has_and_belongs_to_many :items 

end 

물론 생성 해 마이그레이션 메신저를 시각화 힘든 시간을 보내고 :

./script/rails generate migration create_item_wishlists wishlist_id:integer item_id:integer 

항목 및 위시리스트 사이에 테이블을 조인 만들 수 있습니다.

UPDATE는 : 코멘트에 "솔직한 눈보라"질문에 대답하려면 :

의 당신이 HABTM 관계로, (단지 제품 또는 다른 모델 이름 항목 변경) 내 대답과 같은 구조를 가지고 있다고 가정 해 봅시다 방금 위시리스트 "항목"의 컬렉션에 새 "항목"을 추가해야합니다 및 다음 저장 :

class User 
    def add_to_wishlist(item) 
    wishlist.items << item 
    end 
end 
:

@user.wishlist.items << item 
@user.wishlist.save 

귀하는 사용자의 방법을 만들 수 있습니다

"항목"컬렉션을 제거하거나 수정하려면 Array에서 Ruby 메서드를 사용한 다음 wishlist를 저장하면됩니다. 그러면 위의 차이점이 확인되고 변경 사항 만 저장됩니다.

+0

내 레일 앱에서 위와 같은 위시리스트 관계를 생성했지만 현재 사용자 위시리스트에 product_id를 추가하는 방법에 대해 알지 못합니다. 생각이 있다면 공유하겠습니다. 감사! – tmaximini

+0

@ frankblizzard 내 대답보기, 방금 귀하의 질문에 대한 해결책으로 업데이 트되었습니다. – MBO

+0

많은 사람에게 감사드립니다 ... 정말로 감사드립니다! – tmaximini

관련 문제