在Rails 3.1中,如何检查模型的has_many关联的任何实例是否已更改?

时间:2011-09-15 21:53:24

标签: ruby-on-rails ruby-on-rails-3 has-many

在Rails 3.1中,我知道你可以检查是否可以更改模型对象的给定实例,但是如何检查模型的has_many关联的任何实例是否发生了变化。

例如假设我有一个包含许多LineItem的Order。 LineItems被添加到Order中,我希望能够检查Order的LineItems是否有任何变化。我想一种方法是循环遍历Order模型中的每个LineItem,如下所示:

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

但是如果有内置或更有效的方式,我很好奇。

1 个答案:

答案 0 :(得分:7)

更短的解决方案:

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