Я относительно новичок в Rails и Ruby и столкнулся со следующим вопросом.
У меня есть 3 объекта:
Родительский объект называется Partner
- объект с именем
Tariff
- третий объект, имеющий отношение к дочернему объекту, называется
User
Когда я создаю нового Партнера (partner = Partner.new
) и новый тариф (tariff = Tariff.new
) и добавляю тариф к партнеру (Partner.tariffs << tariff
), я могу сохранить отношения Партнера с ним, выполнив partner.save!
.
Но в моей ситуации я также получаю пользователя из базы данных (user = User.find.last
) и хочу напрямую добавить ассоциацию с тарифом, прежде чем сохранить все в базе данных. Это потому, что я хочу сохранить / обновить все в одной транзакции, чтобы в случае ошибки все было поддержано ролью.
Я пробовал много способов добиться этого, но не могу этого сделать. Я думал, что это будет примерно так:
partner = Partner.new
tariff = Tariff.new
partner.tariffs << tariff
user = User.find.last
user.tariff = tariff
ActiveRecord::Base.transaction.do
partner.save!
user.save!
end
или
partner = Partner.new
tariff = Tariff.new
partner.tariffs << tariff
user = User.find.last
user.tariff = tariff
ActiveRecord::Base.transaction.do
partner.save!
user.save!
end
или
partner = Partner.new
tariff = Tariff.new
partner.tariffs << tariff
user = User.find.last
user.tariff_id = tariff.id (or something similar)
ActiveRecord::Base.transaction.do
partner.save!
user.save!
end
Я понимаю, что некоторые из моих дел / примеров не могут работать, поскольку нет tariff.id
и нет partner.tariff.last
, пока объекты не сохранены в базе данных.
Было бы неплохо, если бы кто-нибудь мне помог, заранее спасибо!