массив массивов ruby ​​на рельсах - PullRequest
1 голос
/ 09 ноября 2010

При выполнении поиска магазинов и разбивке по страницам результатов (10 на страницу) в левой части страницы, мне нужно показать список сотрудников (без дубликатов), которые работают во всех магазинах, отображаемых в настоящее время.

В представлении у меня есть следующее, но оно не кажется самым эффективным и показывает дублирующих сотрудников

- @shops.each do |shop|
- shop.employees.each do |employee|
 %li = link_to "#{employee.name}", employee_path(employee)

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010
@shops.map(&:employees).flatten.uniq.each do |employee|
  %li = link_to "#{employee.name}", employee_path(employee)
end
2 голосов
/ 09 ноября 2010

uniq?

- @shops.each do |shop|
- shop.employees.uniq.each do |employee|
 %li = link_to "#{employee.name}", employee_path(employee)
0 голосов
/ 09 ноября 2010

Этот тип запроса должен выполняться в БД, а не в памяти.

class Shop
  has_many :employees
end

class Employee
  belongs_to :shop
end

Извлечение сотрудников для заданной коллекции магазинов в вашем контроллере:

@employees = Employee.all_by_shop_id(@shops, :order => :name)

Теперь на ваш взгляд:

-@employees.each do |employee|
  %li = link_to "#{employee.name}", employee_path(employee)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...