2011-03-02 11 views
1

私は実際にどのようにフレーズ質問をよく知っているが、ここで行きませんでした:は、異なるモデルが作成されたときにモデルのインスタンスを自動的に生成しますか?

は、私は毎回新しいレコードインスタンスがあることを確認する方法をしたい私は2つのモデル

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

class Role < ActiveRecord::Base 
    belongs_to :record 
end 

を考えてみましょう作成された2つの新しいロールが、そのレコードのシステムによって自動的に作成されます。

rolenamerecord_idBoolean called editBoolean called reviewています。

私はHelloと呼ばれるrecordを作成して、それがID 1を持っている場合ので、システムは、同時にこれらの2つの新しい役割を作成する必要があります。

役割1:name: Hello editrecord_id: 1edit: truereview: false

を役割2:name: Hello reviewrecord_id: 1edit: false、救助へreview: 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

を?ロールは同じ '' secondary_id''(これは実際には同じレコードの異なるバージョンですが、DB内の別個のエンティティです)を持つ多くのレコードに属します。ありがとうございました –

1

このお試しください:こんにちは、あなたは新しい役割を作成したら、どのように、2つの間の関連付けを追加し、役割とレコードの関係はhmabt関係になったと言うことができます

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 
関連する問題