Как добавить существующие записи для HAS_MANY без его сэкономить в БД немедленно?

Предположим, я получил это:

class Pirate < ActiveRecord::Base
  has_many :parrots
  validates_presence_of :name
end

class Parrot < ActiveRecord::Base
  belongs_to :pirate
end

и у меня есть существующие пираты и попугаи с IDS 1-10. Теперь я хотел бы сделать это:

p = Pirate.first
p.name = nil
p.parrot_ids = [1,2,3]
p.save if p.valid?

Поскольку пиратский объект недействителен (не хватает имени), я не хочу, чтобы это было сохранено. Тем не менее, попугаи связаны с пиратом сейчас, и он совершается в базе данных.

Как я могу назначить попугаи, но есть ли ссылки на попугаи, только сохраняются только в базу данных, когда P.Save успешно? Т.е. как я могу сохранить пират и ссылки с попугаями в одной транзакции?

11
задан Jim Soho 3 September 2011 в 04:10
поделиться