При добавлении записей в ассоциацию has_many
и сохранение родительского элемента, этот родительский элемент updated_at
не набит:
order = Order.new
order.save
pp order
=> #<Order id: 3, created_at: "2013-04-18 15:25:09", updated_at: "2013-04-18 15:25:09">
order.line_items << LineItem.new()
pp order.line_items
=> [#<LineItem id: 4, order_id: 3, created_at: "2013-04-18 15:26:16", updated_at: "2013-04-18 15:26:29", product_id: 123>]
order.save
pp order.reload
=> #<Order id: 3, created_at: "2013-04-18 15:25:09", updated_at: "2013-04-18 15:25:09">
Это имеет смысл, beacause Order
он не коснулся; внешний ключ живет на LineItem
.
Однако в этом случае я хотел бы запросить Order
и найти только Order
, которые получили последние LineItem
за последние 30 минут (т.е. были обновлены за последние 30 минут).
Я не уверен, что лучше делать здесь, и как я мог бы достичь этого легко. Есть ли какой-то флаг или метод, который я мог бы установить, чтобы AR обновлял родительские updated_at
, как описано? Или я должен сделать это через какой-то крючок? Если да, то какой крюк? Или я должен хранить эту метку времени в другом столбце?
Обратите внимание, что я могу запросить line_items.updated_at
trough a join(:line_items)
, но это, вероятно, сделает мой код более загроможденным и менее эффективным: или это предпочтительный способ для таких проблем в Rails?