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")