检查所有子对象是否属于同一个父对象?

时间:2011-09-17 00:44:00

标签: ruby-on-rails

Rails 3.1,Ruby 1.8.7

我有Group:has_many => :items

我有Item:belongs_to => :group

然后,我有时会运行一个返回许多项目的搜索 - 这些项目可能属于也可能不属于同一组。

有没有办法检查视图中返回的数组中的所有项是否属于同一个父组(组)?

我能想到的最好的是:

##Application Helper
def belongs_to_same_group(items)
  group = items.first.group
  items.each do |item|
    return false if item.group != group
  end
  return true
end

但是我猜测ruby或者rails对于这些我不了解/不够熟练的情况有一些很好的单行程。

1 个答案:

答案 0 :(得分:2)

这是一个班轮:

items.map(&:group_id).uniq.length == 1

或另一种写你已做过的方式:

items.all? {|item| item.group_id == items.first.group_id }