Предположим, я получил это:
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 успешно? Т.е. как я могу сохранить пират и ссылки с попугаями в одной транзакции?