Ransack sort Nested Assosiation по имени атрибута

У меня есть модель по имени 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).

Обновление: я обнаружил, что ошибка связана с тем, что я изменил функцию заказа, чтобы нулевые значения появлялись последними при сортировке. Как я показываю в этом ответе: /questions/11262848/kak-nastroit-ransack-rails-gem-dlya-dobavleniya-nulls-last-dlya-sortirovki/11262855#11262855

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

1 ответ

Решение

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

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

Вот так:

@result = @q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")
Другие вопросы по тегам