У меня есть Projelements
, которые похожи на:
Milestone
Task
- ... и т. Д. *
Каждый Projelement
может иметь один или несколько встроенных Comments
(благодаря Mongoid
).
Я хочу, чтобы можно было легко сказать:
Дайте мне список Projelements
, отсортированный по дате последнего обновления
Где last_updated
для Projelement
больше:
this_projelement.updated_at
ИЛИ
if this_projelement.comments.count > 0 then this_projelement.comments.last.updated_at
Я могу создать Projelement
метод класса last_updated_at
с вышеуказанной логикой.
Но на самом деле я хочу закончить, выполняя запрос моего Projelements
, получая последнее обновленное Projelement
, используя вышеуказанную логику, так же, как вы делаете запрос, используя атрибут .
Ранее я пытался использовать подход только для атрибутов:
Попытка с использованием атрибута updated_at
: эта временная метка обновляется, если вы обновляете атрибуты Projelement
, но не обновляется, если вы обновляете встроенную Comments
. Поэтому я могу вручную обновить this_projelement.updated_at
всякий раз, когда добавляется Comment
. Но дизайн кажется хрупким.
Также подумал о наличии отдельного атрибута (например, last_updated_at
), чтобы существующая семантика updated_at
не была нарушена. Но дизайн также кажется хрупким.
Каким был бы путь Rails?