Mongoid协会&引用

时间:2012-08-13 12:52:56

标签: ruby-on-rails associations mongoid

我有一个关于Mongoid中关联的新手问题。我有这两个模型

class Manufacturer
  include Mongoid::Document

  field :name, type: String
  field :url, type: String

  has_many :products
end

class Product
  include Mongoid::Document

  field :manufacturer_name, type :String
  field :model, type: String
  field :price, type: Float

  belongs_to :manufacturer
end

现在我创建了一家新公司:

man = Manufacturer.create name: 'Flower Power Companies', url: 'www.flowerpower.com'

和新产品:

prod = Product.create manufacturer_name: what_comes_here, model: 'Foo0815', price: '19.90'

如何将prod.manufacturer_name引用到man.name?如果更改man.name,则应自动更改prod.manufacturer_name。

1 个答案:

答案 0 :(得分:0)

如果您已经在两者之间建立了关系,那么为什么需要在product表中使用cloumn manufacturer_name。

只做

m = Manufacture.create name: "...", url: "..."
p = m.products.create model: ".." , price : 19.90 

这将自动在您的制造商和您的产品之间建立关系。稍后当您想知道制造商的名称时,只需致电p.manufacture.name

当您创建新产品并希望稍后将产品添加到产品中时,只需执行

即可
p = Product.create model: "",price: ""
p.manufacture = Manufacture.find(:id)