4

典型的なブログアプリケーションがあります。各ユーザーには多数の投稿があります。各投稿には has_many のタグがあります。各投稿を updated_at で並べ替えているので、最近更新された投稿が一番上に表示されます。たとえば、投稿のコンテンツを更新すると、その投稿が一番上に表示されます。ただし、タグは対応する投稿に接続されているため、タグを追加しただけでも発生します。

コンテンツの更新で updated_at フィールドを変更するだけです。タグを追加したので、投稿の updated_at を変更したくありません。これを行う方法はありますか?または、このようなことを達成する他の方法はありますか? ありがとうございました!

4

2 に答える 2

4

次の 2 つのアプローチが思い浮かびます。

  1. :updated_at使用目的には使用しないでください。代わりに、新しい列を作成し:post_updated_at、投稿を一番上に移動させたい保存ごとに手動で更新します。Rails は、このための便利なモデル メソッドを提供します。

    mypost.touch :post_updated_at
    
  2. 列を更新していて変更を加えない場合は、メソッド:updated_atを使用します。この#update_columnメソッドは、指定した値でデータベース内の列を直接更新します。値を逐語的にデータベースに書き込むことに注意してください。そのため、問題の列が派手なserialize列または類似の列である場合は、賢くする必要があります。

于 2012-04-06T04:41:00.633 に答える