Я использую Ruby on Rails 3.2.13, и я хотел бы ограничить количество записей базы данных, связанных с объектом без, ограничивающих процесс хранения новых записей. То есть, у меня есть класс Article
, который has_many :reviews
, и я хотел бы хранить максимум 10 обзоров на статью и перезаписывать старейший отзыв, когда будет отправлено новое, более десяти. Например, учитывая, что 10 обзоров были представлены для статьи, когда для этой статьи был представлен новый обзор, я хотел бы получить самый старый обзор и перезаписать его (без создания нового обзора в базе данных).Как ограничить количество записей, связанных с объектом, не ограничивая процесс хранения новых записей?
Я думал сделать это в модели Review
путем перезаписи, когда в базе данных для данной статьи содержится 10 обзоров, атрибут created_at
в дополнение ко всем остальным атрибутам. Другими словами, я хочу избежать создания новой записи (с новым id
), но обновить самую старую с новыми данными, которые были отправлены таким образом, чтобы сохранить 10 последних обзоров. Кажется, он работает как очередь FIFO.
Как я могу это сделать?
Примечание: Решение, предложенное @bgates может быть хорошим, но я хотел бы избежать уничтожения старейшей, а затем создать новые (или наоборот) записи, потому что, приняв решение согласно @bgates', запись ids
(например: 1, 2, ..., 34, ..., 7897987987, ...) с новые отзывы постоянно представлены, примерно каждые 20 секунд. Должен ли я беспокоиться о росте ids
?
Я хотел бы избежать уничтожения старейшей, а затем создать новые (или наоборот) записи. Я так думаю, потому что я хотел бы продолжать использовать те же ссылки ('ids') для записей, присутствующих в базе данных, и потому что запись' ids' значительно возрастет (например: 1, 2, ..., 34, ..., 7897987987, ...), так как * новые отзывы отправляются постоянно *, примерно каждые 10 секунд. Должен ли я беспокоиться о росте «Ид»? – Backo
Я не думаю, что это будет проблемой, и к тому времени, когда вы получите много обзоров, вы сможете нанять 10 администраторов баз данных в полном объеме, чтобы беспокоиться об этом за вас. :) – bgates
Что вы имеете в виду «вы сможете нанять 10 администраторов баз данных в полный рабочий день»? Что такое администратор баз данных? – Backo