我正在开发一个订单系统。
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
我在设置它时遵循了这篇文章 - &gt; 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 #<...
我所指的文章很老了。
答案 0 :(得分:0)
我会用has_many:through关系替换你的HABTM关系。当您向连接模型添加其他属性时,在这种情况下,您希望添加应该使用的数量has_many:through而不是has_and_belongs_to_many。
编辑:你可以在railsguide中了解更多关于has_many:through和has_and_belongs_to_many之间关于关联的区别: