2011-08-12 33 views

回答

5

这就是用Rails 3.1的预期行为。在活动记录CHANGELOG

调用的ActiveRecord :: Base的#克隆会导致 记录,包括复制冻结状态的浅表副本。没有回调将被调用 。

您可以使用dup。它将运行before_create回调。

+0

我很高兴我有测试发现了这一点。 – allesklar

+0

我已经在使用'clone'的Rails 3.0.x中编写了测试,当我切换到Rails 3.1.0时,调用'save'时得到的症状是'SQLite3 :: ConstraintException:约束失败',由于重复“id”属性。更改为'dup'作为@htanata建议修复它;谢谢! – bjnord