2

내 레일 3 모델에는 제품, 서비스라는 두 가지 클래스가 있습니다. Store and Store has_many라는 또 다른 모델이 있기 때문에 InventoryItem 유형이되기를 바랍니다. InventoryItems레일 3 추상 클래스 대 상속 클래스

이것은 내가 얻으려고하는 것이지만, InventoryItem 모델에서이를 모델링하는 방법을 잘 모르겠습니다. 내 제품 및 서비스 모델. InventoryItem은 Product 및 Service가 상속하는 상위 클래스이거나 InventoryItem이 Product 및 Service가 확장되는 클래스 요약으로 모델링되어야합니다.

미리 조언 해 주셔서 감사합니다.

답변

1

나는 어느 쪽도 사용하지 않으며, 수행 것 :

class Store 
    has_many :inventory_items 
    has_many :products, :services, :through => :inventory_items 
end 

class InventoryItem 
    belongs_to :store 
    belongs_to :products, :services 
end 

class Product 
    has_many :inventory_items 
    has_many :stores, :through => :inventory_items 
end 

class Service 
    has_many :inventory_items 
    has_many :stores, :through => :inventory_items 
end 
+0

예, 죄송합니다, 내 용어는 내가 할 수있는 뷰를 만들려고 해요, 조금 둔한했다 내 사용자가 단수 필드를 통해 상점에 항목을 추가 할 수 있습니다. 그래서 모든 항목 (둘 다 제품과 서비스)을 가진 콤보 박스를 말하자. 그래서 그것을 모델링하는 방법을 알아 내려고 노력했다. 이 협회가 내가 필요한 것을 할 것 같은데. –

+0

올바르게 이해하면 storeObj.inventory_items.count를 수행하고 조인 모델로 인해 스토어에있는 총 제품 및 서비스 수를 얻을 수 있습니까? 또는 더 중요한 것은 print_invoice_store_path (@inventory_items)와 같은 일을함으로써 모든 제품과 서비스의 청구서를 인쇄 할 수 있다는 것입니다. –

+0

은 store.inventory_items.count와 관련이 있습니다. 예, 모든 has_many 연결과 마찬가지입니다. re print_invoice_store_path, 별도로 물어 볼 가치가 있지만, 원칙적으로 그렇습니다. print_invoice_store_path (@store)와 비슷하다고 생각할 것입니다. 그런 다음 작업 내에서 @ store.inventory_items에 액세스 할 수 있습니다. 어쨌든 관련 컬렉션을 처리하거나 출력 할 수 있습니다. 어쨌든 당신은 – oliverbarnes

2

개인적으로 저는 상속을 사용하지 않습니다. 왜 그냥 말하지 마시오

has_many :services 
has_many :products 

상속은 매우 비쌉니다. 런타임 및 가독성 측면 모두에서 너무 비쌉니다. 이 경우는 상속이 필요없는 매우 기본적인 경우와 같습니다. 정말로 제품과 서비스가 기본 클래스의 무언가를 실제로 상실하게하고 싶습니까? 당신이 쓰는 것은 당신이 원하는 것은 협회를 설립하는 것입니다. Mörre는 InventoryItem의 조인 모델이 가지고 무엇을 제안