Dodając zapisy do stowarzyszenia has_many
i zapisywanie rodzica, że rodziców updated_at
nie wpadł:jak uczynić ActiveRecord wpadać updated_at na nowego stowarzyszenia has_many
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">
Ma to sens, beacause Order
nie dotknął; klucz obcy mieszka na LineItem
.
Jednak w tym przypadku, chciałbym kwerendy Order
i najtańszą Order
s, które otrzymaliśmy nowe LineItem
s w ciągu ostatnich 30 minut (czyli: byli „zaktualizowane” w ciągu ostatnich 30 minut).
Nie jestem pewien, co najlepiej tu zrobić i jak mogę to łatwo osiągnąć. Czy jest jakaś flaga lub metoda, którą mógłbym ustawić na aktualizację AR dla rodziców updated_at
jak opisano? Czy powinienem to zrobić przez jakiś hak? Jeśli tak, to jaki hak? Czy powinienem przechowywać ten znacznik czasu w innej kolumnie?
Zauważ, że mógłbym przetestować line_items.updated_at
przez join(:line_items)
, ale to prawdopodobnie spowodowałoby, że mój kod byłby bardziej zagracony i mniej wydajny: czy jest to preferowany sposób na takie problemy w Railsach?