Предположим, у меня есть это:
class Pirate < ActiveRecord::Base
has_many :parrots
validates_presence_of :name
end
class Parrot < ActiveRecord::Base
belongs_to :pirate
end
И у меня есть существующие пираты и попугаи с идентификаторами от 1 до 10. Теперь я хотел бы сделать это:
p = Pirate.first
p.name = nil
p.parrot_ids = [1,2,3]
p.save if p.valid?
Поскольку объект pirate недействителен (отсутствует имя), я не хочу, чтобы он был сохранен. Тем не менее, попугаи теперь связаны с пиратом и передаются в базе данных.
Как я могу назначить попугаев, но есть ли ссылки на попугаев, сохраненные только в базе данных, когда p.save успешно? I.e., как я могу сохранить пират и ссылки на попугаев в одной транзакции?