2010-11-15 85 views
1

我有一個Foo類嵌入對象欄。每當創建Foo時,我都希望創建它的Bar。 Bar通過傳遞來自Foo的變量來啓動。我怎樣才能做到這一點?MongoDB幫助(關係)

謝謝

+0

你在使用包裝庫嗎?如果是這樣,什麼? – 2010-11-15 21:29:35

回答

1

使用before_create掛鉤來自動創建您的Bar。像

class Foo 
    include Mongo.... 
    attr_reader :new_bar 
    before_create :create_bar 

    def create_bar 
    self.bars << new_bar 
    end 
end 

這樣你仍然可以驗證酒吧(使用new_bar或任何你想要的)。

MongoMapper和Mongoid都有before_create鉤子,所以你應該沒問題。

+0

我正在使用mongoid並想使用embed_one:bar。我的控制器(Foo和Bar)應該是什麼樣子? – timstepp 2010-11-24 20:56:51

+0

@bar = Bar.new(params [:bar]) @ foo.bar = @bar – 2010-11-24 23:46:47

+0

好的。這很好!還有一個問題...... Bar擴展了Array類。我想從Foo模型中的方法調用self.bar.method1(var1,var2 ..)。本質上,我想加載一些默認哈希到Bar timstepp 2010-11-29 01:43:38