автоматически генерировать экземпляры модели при создании другой? - PullRequest
1 голос
/ 03 марта 2011

Я действительно не знал, как лучше сформулировать вопрос, но здесь говорится:

Допустим, у меня есть 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 edit и Boolean called review.

поэтому, если я создаю record с именем Hello и у него есть идентификатор 1, тогда система должна создать эти 2 новые роли одновременно:

Роль 1: name: Hello edit, record_id: 1, edit: true, review: false

Роль 2: name: Hello review, record_id: 1, edit: false, review: true

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Обратные вызовы 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
1 голос
/ 03 марта 2011

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...