1

以前在这里问过这个问题,但已经3年了。不幸的是,我们仍在使用 Rails 2.3.14,所以这是我现在遇到的问题,当时并没有真正得到解答。

我有2个模型...

组织组织权限

在组织控制器的创建方法中,我将组织和组织权限对象保存在组织事务中。

如果组织保存良好,没有错误,但组织权限对象失败,则事务没有正确回滚组织对象。方法new_record?认为该对象不再是新的,然后强制我的表单进行更新操作,这是我不想要的。

这是09年在这里问的...

http://bit.ly/MbYGXd

结果是它是 2.3.5 中的一个错误,但没有关于如何解决它的答案。

有没有解决的办法?

谢谢

更新:

只是想把它推到顶峰。可能不应该在周末发布。:)

我仍然不知道该怎么做。当引发错误并且它不在主对象中时,ActiveRecord 对象未设置为 new_record?并且该页面不再反映创建,现在是更新,这绝对不会起作用。

我本可以发誓有办法解决这个问题,但我在任何地方的代码中都找不到它。

4

1 回答 1

0

我遇到了类似的问题,发现如果将代码包装在嵌套的 rollback_active_record_state 中!块然后它按预期工作。就我而言,交易在after_create回调中失败。

ActiveRecord::Base.transaction do
  @model_a = ModelA.new(params[:model_a])
  @model_b = ModelB.new(params[:model_b])

  @model_a.rollback_active_record_state! do
    @model_b.rollback_active_record_state! do
       @model_a.save!
       @model_b.save!
       ...
    end
  end    

end
于 2012-09-29T13:55:42.057 回答