1

versionedPost モデルに追加しました。たとえば、次のようにします。

1.9.3-p448 :040 >p = Post.first
1.9.3-p448 :041 > p.version
 => 1 

次に、Web サイトの UI を介して投稿を更新します。サーバーログを監視すると、変更が保存されます。

コンソールに戻ります:

1.9.3-p448 :054 > p.version
=> 1

変化なし。しかし、私はこれを行います:

1.9.3-p448 :059 > p.update_attributes(category: "Announcements")
   (1.3ms)  BEGIN
  SQL (2.2ms)  UPDATE "posts" ...
 => true 
1.9.3-p448 :060 > p.version
 => 2

コマンド ラインではバージョンが更新されるのに、UI からレコードを更新すると更新されないのはなぜですか?

4

1 に答える 1

0

これは、Post 自体を参照するのではなく、変数 (上記の「p」) に Post のデータのコピーが割り当てられているためだと思います。変数を同じオブジェクトに再割り当てすると、UI を介して行われた更新がバージョン番号に反映されているように見えます。例えば:

p = Post.find(1)
p.version
=>1

(その後、UI を介して投稿 1 を更新します)

p.version
=> 1
p = Post.find(1)
p.version
=> 2
于 2014-09-26T23:50:55.643 に答える