#ruby-on-rails #ruby #postgresql #smart-listing
Вопрос:
у меня есть этот код
%th= smart_listing.sortable(t('.name'), 'name')
Предположим, что имя разделено на две части, имя и фамилию (пример: «Карлос Гонсалес»), есть ли способ сортировки по фамилии?
Комментарии:
1. Как бы вы отсортировали имена, содержащие 3 или 4 части? Если есть 3 части, как вы узнаете, является ли вторая часть вторым именем или первой фамилией? Я боюсь, что вы не сможете автоматически сортировать по фамилии, если в вашей базе данных нет специального столбца с фамилией. И если у вас есть выделенный столбец с фамилией, вам все равно нужно уметь обращаться с людьми без имени lasz (да, это возможно).
Ответ №1:
Предполагая, что он всегда содержит только две части, да, это возможно. Вы можете использовать sort_by
метод, который принимает блок кода. Пример:
full_names.sort_by {|full_name| full_name.split[1]}
Но это не общее решение. Как прокомментировал Спайсерманн, если у вас более сложные имена, с этим очень трудно справиться. Я нашел этот драгоценный камень, но это тоже не общее решение.
Комментарии:
1. Спасибо! не могли бы вы прокомментировать, какой будет реализация с использованием этого драгоценного камня?
2. в какую часть мне следует вставить код, который вы отправили?
3. Вы должны использовать его в своем массиве с именами