我有一个模型。我想克隆它。 但是在我运行model.save之后!我的before_create回调没有被触发。 所以,我想知道是否让轨道认为这个克隆对象实际上是新的。Rails 3.1 before_create回调不会触发克隆模型后
感谢
我有一个模型。我想克隆它。 但是在我运行model.save之后!我的before_create回调没有被触发。 所以,我想知道是否让轨道认为这个克隆对象实际上是新的。Rails 3.1 before_create回调不会触发克隆模型后
感谢
这就是用Rails 3.1的预期行为。在活动记录CHANGELOG:
调用的ActiveRecord :: Base的#克隆会导致 记录,包括复制冻结状态的浅表副本。没有回调将被调用 。
您可以使用dup
。它将运行before_create
回调。
我很高兴我有测试发现了这一点。 – allesklar
我已经在使用'clone'的Rails 3.0.x中编写了测试,当我切换到Rails 3.1.0时,调用'save'时得到的症状是'SQLite3 :: ConstraintException:约束失败',由于重复“id”属性。更改为'dup'作为@htanata建议修复它;谢谢! – bjnord