Ransack sort Вложенная ассоциация по имени атрибута

У меня есть модель с именем Project с этой ассоциацией, настроенной для связывания сотрудников в качестве участников:

has_many :project_contributions,  dependent: :destroy
has_many :contributors, through: :project_contributions, source: 'employee'

На мой взгляд, у меня есть это поле сортировки:

<%= sort_link(@q, :contributors_name) %>

Это дает мне ошибку, когда я нажимаю на ссылку, она жалуется, что метод не существует.

Я вижу, что, поскольку ассоциация является ассоциацией has_many, я должен «назвать» ссылку сортировки чем-то другим, но я понятия не имею, каким я должен быть.

Или Ransack не поддерживает сортировку has_many? Также может случиться так, что я использую другое имя, отличное от исходного имени таблицы (employee).

Обновление: я обнаружил, что ошибка связана с тем, что я изменил функцию порядка, чтобы нулевые значения отображались последними при сортировке. Как я показываю в этом ответе: https://stackoverflow.com/a/35529699/900271

Кто-нибудь знает, как я могу разрешить сортировку вложенных столбцов, но при этом упорядочивать нулевые значения в последнюю очередь?


person Ole Henrik Skogstrøm    schedule 28.02.2016    source источник


Ответы (1)


Итак, теперь я нашел решение в связанном вопросе/ответе (который снова связан с проблемой github).

В моем контроллере, где я заказываю на основе столбца сортировки, мне нужно использовать attr_name вместо просто name, когда я настраиваю порядок сортировки для обработки нулевых значений в последнюю очередь.

Вот так:

@result = @q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")
person Ole Henrik Skogstrøm    schedule 28.02.2016