0

注文システムを開発しています。

Models:
   Orders
   Products
   OrderProducts

すべての製品には、ユーザーにいくつあるかを示す独自の数量フィールドがあります。

同一商品、複数商品を複数注文できるようにしたい。すなわち。HABTM。

class Order < ActiveRecord::Base
    has_and_belongs_to_many :products
end

class Product < ActiveRecord::Base
    has_and_belongs_to_many :categories
    has_and_belongs_to_many :orders
end

class OrdersProducts < ActiveRecord::Base
    belongs_to :product
    belongs_to :order
    validates_presence_of :q
end

私はそれを設定する際にこの記事に従いました - > thinkbot

しかし問題は、コンソールでこれを行うときに「q」フィールドにアクセスできないことです。

>> product = Product.create
>> order = Order.create
>> orders_products = OrdersProducts.create :product => product, :order => order, :q => 10

>> order.products.collect{|each| each.q}
=> NoMethodError: undefined method `q' for #<...

ただし、参照している記事はかなり古いものです。

4

1 に答える 1

0

HABTM 関係を has_many :through 関係に置き換えます。結合モデルに追加の属性を追加する場合、この場合、has_and_belongs_to_many の代わりに has_many :through を使用する必要がある数量を追加します。

編集: 関連付けに関する railsguide の has_many :through と has_and_belongs_to_many の違いについて詳しく読むことができます:

http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many

于 2013-09-15T12:02:13.187 に答える