В Rails 3.1 как я могу проверить, изменились ли какие-либо экземпляры ассоциации has_many модели? - PullRequest
2 голосов
/ 16 сентября 2011

В Rails 3.1 я знаю, что вы можете проверить, можно ли изменить данный экземпляр объекта модели, но как я могу проверить, изменились ли какие-либо экземпляры ассоциации has_many модели.

Например, предположим, что у меня есть ордер с несколькими LineItems. LineItems добавляются в заказ, и я хочу иметь возможность проверить, изменился ли какой-либо из LineItems заказа. Я полагаю, что один из способов сделать это - перебрать все LineItems в модели Order следующим образом:

def line_items_changed?
  self.line_items.each do |item|
    if item.changed?
      return true
    else
      return false
    end
  end
end

но было любопытно, был ли встроенный или более эффективный способ.

1 Ответ

7 голосов
/ 16 сентября 2011

Сокращенное решение:

def line_items_changed?
  line_items.any?(&:changed?)
end
...