Ruby on Rails 3.2.13 を使用していますが、新しいレコードを保存するプロセスを制限することなく、オブジェクトに関連付けられたデータベース レコードの量を制限したいと考えています。つまり、記事ごとに最大 10 件のレビューを保存し、10 件以上の新しいレビューが送信されたときに最も古いレビューを上書きするArticle
クラスがあります。has_many :reviews
たとえば、その記事に対して新しいレビューが送信されたときにその記事に対して 10 件のレビューが送信された場合、最も古いレビューを取得して上書きしたいと思います (データベースに新しいレビューを作成せずに)。
特定の記事のデータベースに10件のレビューが存在する場合、他のすべての属性に加えて属性をReview
上書きすることにより、モデルでそれを作成することを考えました。created_at
つまり、新しいレコードを (新しい で) 作成することは避けたいのですが、id
送信したばかりの新しいデータで最も古いレコードを更新して、最新の 10件のレビューを保存したいと考えています。FIFOキューのように機能するようです。
どうすればそれを作ることができますか?
注: @bgates によって提案された解決策は良いかもしれませんが、@bgates の解決策を採用することによりids
、時間の経過とともにレコードが大幅に増加するため、最も古いレコードを破棄してから新しい (またはその逆の) レコードを作成することは避けたいと思います (例: 1 、2、...、34、...、7897987987、...)新しいレビューが常に送信されるため、約 20 秒ごとに。の成長を心配する必要がありids
ますか?