0

我正在开发一个订单系统。

Models:
   Orders
   Products
   OrderProducts

每个产品都有自己的数量字段,告诉用户有多少。

我希望能够订购不止一种相同的产品和多种产品。IE。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

我按照这篇文章进行了设置-> thoughbot

但问题是我在控制台中执行此操作时无法访问“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

我会用 has_many :through 关系替换你的 HABTM 关系。当您向连接模型添加其他属性时,在这种情况下,您想要添加应该使用 has_many :through 而不是 has_and_belongs_to_many 的数量。

编辑:您可以在 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 回答