2012-03-16 16 views
-1

私は自分の質問に対して-1を得るのに驚いています。彼らは単純ではなく、複雑です。
私のline_itemsテーブルにproduct_idがありますcart_id order_id 顧客が商品をクリックするたびにカートに追加されます。 私のアパート、車、ツアーパッケージは製品ではありません。どういうわけか私の車、アパートに私が言う製品に接続できると思っている人は誰でも。彼らは根本的に異なる属性を持っています。顧客がアパートをクリックして2ベッドルームを選択すると、自分のapartment_idまたはcar_idまたはtour_idをどのようにline_itemsに追加することができるかを指定できます。 STIや多重継承に関する理論は必要ありません。私は正確に答えが必要です。レール専門家に感謝します。あなたはとにかく...シンプルカートには専門家の回答が必要

をdownvotesを取得しているので、

+3

を実行している正確に何をチェックすることができます。他の質問を見てみると、多くの詳細、特に例を挙げて、彼らが試したことを示す人々が見えます。質問が難しいほど詳細が必要です。上記の質問を見ると、あなたがしようとしていることについて大いに理解していることを前提としていることに気付くでしょう。それ自身の上に立つ質問を書いてください(これを編集してください!)あなたはおそらく答えを得るでしょう。 –

答えて

2

あなたはSOガイドラインに関するご質問をフォーマットする必要がありますまず第一に、それは多分だ、私はあなたがpolymorphic associationsを探していると思います。 Productは、お店で利用可能な製品とLineItemであることを意味すると仮定すると

は順番に製品を表す:それはあなたのproductsテーブルを動作させるために

class LineItem < ActiveRecord::Base 
    has_one :product # ONE LineItem references ONE product in the shop 
    belongs_to :cart # respectively belongs_to :order 
end 

class Cart < ActiveRecord::Base 
    has_many :line_items # ONE Cart HAS MANY LineItems 
end 

class Product < ActiveRecord::Base 
    belongs_to :buyable, :polymorphic => true 

    # here you would have general attributes representing a product, e.g. 'name' 
end 

class Car < ActiveRecord::Base 
    has_one :product, :as => :buyable 

    # here you would have specific attributes in addition to the general attributes in 
    # product, e.g. 'brand' 
end 

class Apartment < ActiveRecord::Base 
    has_one :product, :as => :buyable 

    # here you would have specific attributes in addition to the general attributes in 
    # product, e.g. 'address' 
end 

を2列

    を持っている必要があります
  • buyable_type(文字列)
  • buyable_id(整数)

だからあなたのコードでは、あなたの製品は、あなたがここに誰が答えることが十分_understand_ことができると疑問を_ask_するために必要な努力を入れていないので、ダウン票がそうである

@product = Product.find(params[:id]) 

if @product.buyable.is_a? Car 
    puts @product.buyable.brand 
elsif @product.buyable.is_a? Apartment 
    puts @product.buyable.address 
end 
+0

おかげさまでVapire right direction –

関連する問題