2011-03-02 51 views
1

我真的不知道如何短語的問題更好,但這裏有雲:我在創建不同的模型時自動生成模型的實例?

比方說,有2款

class Record < ActiveRecord::Base 
    has_many :roles, :dependent => :destroy 
end 

class Role < ActiveRecord::Base 
    belongs_to :record 
end 

我想辦法,以確保每一次一個新的記錄實例系統爲該記錄創建了2個新角色。

每個role將具有name,record_id,Boolean called editBoolean called review

所以如果我創建record稱爲Hello,它有一個ID 1則系統應該創建同時這些2個新的角色:

角色1:name: Hello editrecord_id: 1edit: truereview: false

角色二:name: Hello reviewrecord_id: 1edit: falsereview: true

回答

2

ActiveRecord的回調救援:

class Record < ActiveRecord::Base 
    after_create :create_roles 

    def create_roles 
    Role.create :name => "Hello edit", :record_id => self.id, :edit => true, :review => false 
    Role.create :name => "Hello review", :record_id => self.id, :edit => false, :review => true 
    end 
end 
+0

嗨,可以說角色與記錄之間的關係成了hmabt關係,你會如何添加兩個之間的關聯,一旦你已經創建的新角色?角色將屬於多個具有相同''secondary_id''的記錄(這實際上只是同一記錄的不同版本,但是在DB中是獨立的實體)。謝謝 –

1

試試這個:

class Record < ActiveRecord::Base 
    has_many :roles 
    after_create :add_roles 

    def add_roles 
    roles.create [ 
     {:name => "Hello edit", :edit => true, :review => false}, 
     {:name => "Hello review", :edit => false, :review => true}] 
    end 
end 
相關問題