2012-08-13 4 views
0

몽고이드에서 협회에 관한 초보자 질문이 있습니다.몽고 이드 협회 및 참조

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

새로운 제품 :

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

하는 자극을 참조하는 방법은이 두 모델은

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 

가 지금은 새로운 회사를 만들 수 있습니다 .manufacturer_name을 man.name으로 변경 하시겠습니까? man.name을 변경하면 prod.manufacturer_name을 자동으로 변경해야합니다.

답변

0

두 제품 사이에 관계가 있으므로 제품 테이블에 제조 이름이 필요합니다.

그냥 자동으로 제조 및 제품 사이의 관계를 생성합니다

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

이 작업을 수행합니다. 당신은 제조의 이름을 알고 싶을 때 새로운 제품을 만들고,이 것 같다 그럼 그냥

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

흠을 제품에 이상 제조를 추가 할 때 나중에 단순히 p.manufacture.name

전화 내가 찾는 길. JSON API 백엔드에서 코딩 중이므로 제품에는 제조업체를 나타내는 필드가 있어야합니다. 나는 그걸 가지고 놀거야 ... – ctp

+0

허, 하나 더 자세한 정보를 잊었 : – ctp

+0

m = Manufacturer.create 이름 : "옛 이름", URL : "www.foobar.com" p = m.products.create 모델 : "Superduper", 가격 : 19.90 p.manufacturer.name은 내가 기대하고있는 것을 반환합니다. "Old name"그러면 제조업체 이름이 바뀝니다. foo = Manufacturer.first foo.name = "새 이름" foo.save! ...하지만 p.manufacturer.name은 여전히 ​​"이전 이름"을 반환합니다. 이것에 대한 어떤 힌트? Btw, MongoDB에는이 하나의 Element 만 포함되어 있으므로 .first는 올바른 문서를 참조합니다. – ctp