1

Rails が提供するすべての関連付けオプションで迷っています。

のテーブルがありますUsers。それらUsersは持っていProductsます。これは単なるhas_many :products関係です。

ただし、ユーザーに製品のリストを提供したいと考えています。彼らはいくつかの製品を選択し、それに価格を追加します。

だから基本的に、私は持っています

USER 1 ----->  PRODUCT 1 ------> PRICE 1    <----.
       ----->  PRODUCT 2 ------> PRICE 2         |
USER 2 ----->  PRODUCT 1 ------> PRICE 3    <----¨
       ----->  PRODUCT 3 ------> PRICE 4

UserProductおよびの 3 つのテーブルを作成する必要がありPriceますか?

また、ユーザーが自分の製品を数量や必要性などでさらにカスタマイズしたい場合はどうすればよいでしょうか? 次に、代わりに次のテーブルを作成する必要があります: UserProductおよびProductDetail

このように、 auser has_many :productと a product has_many :product_detail.

これを行うRailsの方法は何ですか?

has_manyhas_onehas_many :throughなど で迷ってしまいます。

4

1 に答える 1

1

私は以下を作成します:

class User
  has_many :purchases
end

class Product
  has_many :purchases
end

class Purchase
  belongs_to :user
  belongs_to :product

  # mongoid syntax, if using ActiveRecord, use a migration
  field :quantity, type: Integer, default: 0
  field :price, type: Float, default: 0.0
end

user = User.new
apple = Product.new
tea = Product.new
chocolate = Product.new

user.purchases.build(product: apple, price: 2.99, quantity: 1)
user.purchases.build(product: tea, price: 5.99, quantity: 2)
user.purchases.build(product: chocolate, price: 3.99, quantity: 3)

参考までに: と の間のこの種の関係はUserProductPurchase似ていhas_and_belongs_to_manyます。を使用する場合has_and_belongs_to_many、レールは上記のようにクラスをリンクするだけです。ここでは、とを使用してPurchaseクラスをカスタマイズするために、自分で行っています。quantityprice

于 2013-08-03T16:06:38.073 に答える