Проверить, все ли дочерние объекты принадлежат одному и тому же родителю? - PullRequest
0 голосов
/ 17 сентября 2011

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 Ответ

2 голосов
/ 17 сентября 2011

вот одна строка:

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

или другой способ написать, что вы уже сделали:

items.all? {|item| item.group_id == items.first.group_id }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...