Ruby on rails ActiveRecord事务并返回保存的模型id

Ruby on rails ActiveRecord事务并返回保存的模型id,ruby-on-rails,activerecord,translation,Ruby On Rails,Activerecord,Translation,我想使用ActiveRecord事务保存我的三个模型。我找到了一些很好的教程,比如 但我的问题是,我想获取第一个模型的id,并将其保存为第二个模型的外键。据我所知,我无法执行此操作,因为在事务提交之前,我无法获取保存的id 有人有更好的解决方案或解决方法吗?我正在使用Rails 2.3.8。关于: SomeClass.transaction do first_record = SomeClass.create(... vars ...) second_record = SomeClass

我想使用ActiveRecord事务保存我的三个模型。我找到了一些很好的教程,比如

但我的问题是,我想获取第一个模型的id,并将其保存为第二个模型的外键。据我所知,我无法执行此操作,因为在事务提交之前,我无法获取保存的id

有人有更好的解决方案或解决方法吗?我正在使用Rails 2.3.8。

关于:

SomeClass.transaction do
  first_record = SomeClass.create(... vars ...)
  second_record = SomeClass.create(... vars ...)
  third_record = SomeClass.create(... vars ...)

  second_record.update_attributes(:related_id=>first_record.id)
  third_record.update_attributes(:related_id=>second_record.id)
end

这将创建对象,并在一个整体事务中分配ID。如果失败,则应回滚所有记录,包括首先创建记录。

通常,当您需要保存具有关系的对象时,这意味着您应该使用accepts\u nested\u attributes\u来保存

这是迄今为止最干净、最好的方法