モデルがあります。私はそれをクローンしたい。 しかし、私はmodel.saveを実行した後!私のbefore_createコールバックは起動されません。 これは、このクローンオブジェクトが実際に新しいものだと思うようにするためのトリックだと思います。クローンモデルの後にRails 3.1 before_createコールバックが起動しない
おかげ
モデルがあります。私はそれをクローンしたい。 しかし、私はmodel.saveを実行した後!私のbefore_createコールバックは起動されません。 これは、このクローンオブジェクトが実際に新しいものだと思うようにするためのトリックだと思います。クローンモデルの後にRails 3.1 before_createコールバックが起動しない
おかげ
が表示されるはずです。 Active RecordのCHANGELOG上:
のActiveRecordを呼び出す::ベース#クローンは、凍結状態のコピーを含む レコードの浅いコピーになります。コールバックは と呼ばれます。
dup
を使用できます。 before_create
コールバックが実行されます。
私はこれを明らかにしたテストがあったのでとてもうれしいです。 – allesklar
Rails 3.0.xで 'clone'を使ったテストを書いていましたが、Rails 3.1.0に切り替えると、重複のために' save'を呼び出すときに 'SQLite3 :: ConstraintException:constraint failed' "id"属性。 @htanataが 'dup'に変更すると、修正されました。ありがとうございました! – bjnord