将订单与Rails中的产品和客户相关联

时间:2014-03-11 13:22:11

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 associations

我正在考虑一种模式,用户可以将产品添加到他的订单列表中,该订单将具有状态,评论等。多个用户可以拥有多个订单。每个订单中都有一个产品。什么是最好的方式去?

class User
  has_many :orders
end

class Order
  has_one :product
end

class Product
  belongs_to :category
  has_and_belongs_to_many :orders
end

或者我应该考虑使用has_many:通过?另外,与产品模型的habtm关联的has_one关联类型的冲突有没有,或者可以这样使用它?谢谢!

UPD1:经过一系列实验后,我接着说:

class Order
  belongs_to :user
  belongs_to :product
end

class Product
  belongs_to :category
  has_many :orders
end

class User
  has_many :orders
end

虽然现在一切都很稳定,但我很乐意听到任何评论或推荐

1 个答案:

答案 0 :(得分:4)

我认为最好的办法是:

class User
   has_many :orders
   has_many :products, through: :orders
end

class Order
  belongs_to :user
  belongs_to :product
end

class Product
  belongs_to :category
  has_many :orders
  has_many :users, through: :orders
end

有关关联的更多信息,请访问:http://guides.rubyonrails.org/association_basics.html