пользовательские направляющие сортировки smart_listing

#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. Вы должны использовать его в своем массиве с именами