25

質疑応答アプリがあります。誰かが質問に回答を追加するたびに、質問のupdated_atタイムスタンプを更新したいと思います。

したがって、Answerモデルではタッチを使用しています。

  belongs_to :question, :touch => true

ただし、回答が追加されていないときにタイムスタンプが更新されているようです。私はどのように/なぜかを理解しようとしています。これは、このタッチメソッドを追加してからのみ発生しています。

それで、タッチがいつ発射されるかを確認したかったのですか?回答オブジェクトが作成、編集、または破棄されたときだけですか?他にイベントはありますか?つまり、特定の状況下で回答オブジェクトを見るだけでトリガーされるべきではありませんか?

タッチがbelongs_to関係のコンテキストでどのように正確に機能するかを説明する確かなドキュメントは見つかりませんでした。

これが少し不可解な理由は、アプリが比較的単純であり、送信された回答を編集または破棄する機能をユーザーに提供しないためです。

4

1 に答える 1

33

から: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

:touch true の場合、このレコードが保存または破棄されたときに、関連付けられたオブジェクトがタッチされます (updated_at/on 属性が現在に設定されます)。シンボルを指定すると、updated_at/on 属性に加えて、その属性が現在の時刻で更新されます。

belongs_to :company, :touch => true

belongs_to :company, :touch => :employees_last_updated_at

于 2012-12-19T13:25:01.513 に答える