2012-03-20 5 views
0

나는 "전자 상거래와 같은"해결책을 찾으려하고있다. 제품이 정의되면 option_values이 많이 있습니다. 채찍 크림 => 예.배열로 자체 테이블에 외래 키 has_many?

line_item을 만들 때, 나의 연관성은 다음과 같습니다. 사용자가 제품을 선택할 때

class LineItem < ActiveRecord::Base 
    belongs_to :cart 
    belongs_to :order 
    belongs_to :product 
    belongs_to :shop 
    ... 

, 그는 options_values을 선택하고 line_item이를 저장하기 위해 작성해야합니다.

현재 광고 항목에 option_values을 모델링하는 좋은 방법이 무엇인지 알 수 없습니다.

내 직감은 line_item has_many option_values이지만 외래 키는 option_values에 저장하는 것이 이상하게 보일 수 있습니다. 다른 생각은 line_item habtm option_values입니다.

line_item has_many option_values 관계를 모델링하는 좋은 방법은 무엇입니까? line_items 테이블에 참조를 저장하는 것이 이상적입니까? 당신의 option_values 항상 부울 경우

+0

LineItem에서 option_values에 대해 habtm 연관을 사용해야한다고 생각합니다. 따라서 option_values는 주문 세부 정보 등과는 별도로 저장됩니다. – Hck

+0

네, 그게 내가하는 일이라고 생각했는데, 더 나은 해결책이 있어야하고, 그래서 누군가가 똑같은 문제를 겪어야만한다고 생각합니다.) –

답변

0

은 (채찍 크림 => 예) 사용 가능한 모든 option_valuesOptionValues 모델을 가지고 LineItemOptionValues 사이 HABTM을 수행해야합니다.

당신의 옵션 값은 항상 (설탕 => 2.spoons) 부울이 아닌 경우이 같은해야하므로 다음, 결합 모델에서이 값 (2.spoons)를 저장해야합니다

class LineItem < ActiveRecord::Base 
    has_many :line_item_option_values 
    ... 
end 

class LineItemOptionValue < ActiveRecord::Base 
    belongs_to :line_item 
    belongs_to :option_value 
end 

class OptionValue < ActiveRecord::Base 
    has_many :line_item_option_values 
end 

그리고 LineItemOptionValue 테이블에 옵션 값 필드가 있습니다.

+0

감사합니다. 이것은 내가 고려하지 않은 것입니다. 조인 모델은 수량 저장과 같은 일을 할 필요가있을 수도 있습니다. 나는이 방법으로 그것을 할 것이고, 나의 문제를 해결할 것이다. –