Я работаю над сортировкой списка сотрудников по их названию со следующим:
TAGS = {
'Region Manager' => 1,
'Region Sales Manager' => 2,
'General Manager' => 3,
'Residential Sales Manager' => 4,
'Commercial Sales Manager' => 5,
'Other' => 6
}.freeze
def sorting_by_title(employees)
employees.sort_by do |x|
TAGS[x[:title]]
end
end
Работает нормально, но ... Мне также нужно сделать дополнительную сортировку, если фамилия сотрудника - Смити должен идти перед другими людьми.
Поэтому я попытался сделать что-то вроде:
return TAGS[x[:title]] unless x.last_name == "Smith"
Не работает.Это ошибка на странице показа с неопределенным методом `each 'для 2: целое число.
Поэтому я подумал, что я должен создать другой метод для поиска фамилии.
def nepotism(employees)
employees.group_by do |emp|
case emp.last_name
when /Smith/ then :moocher
end
end
end
Поэтому я попытался ссылаться на него так:
return TAGS[x[:title]] unless x.nepotism
return TAGS[x[:title]] unless x.moocher
Ни одна из этих работ.Непотизм заканчивается неопределенным методом `nepotism 'для #, а Moocher заканчивается тем же.Тогда я понял, что простой запрос будет работать немного лучше:
def nepotism
@nepotism = Employee.where(last_name: "Smith")
end
Есть ли лучший способ сортировки по фамилии, если он соответствует Смиту и ТО по тегам?