搜索排序属性名称上的嵌套关联

Ransack sort Nested Assosiation on attribute name

我有一个名为 Project 的模型,该关联设置为 link 名员工作为贡献者:

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

在我看来我有这个排序字段:

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

当我单击 link 时出现错误,提示该方法不存在。

我可以看到,由于协会是 has_many 协会,我应该 "name" 排序 link 其他东西,但我不知道我应该是什么。

或者Ransack不支持has_many排序?也可能是我使用了与原始 table 名称 (employee) 不同的名称。

更新: 我发现该错误与我更改排序函数以使空值在排序时最后出现有关。就像我在这个答案中展示的那样:

有谁知道我如何允许嵌套列排序同时仍然对空值排序?

好的,现在我在链接 question/answer 中找到了解决方案(再次链接到 github 问题)。

在我根据排序列排序的控制器中,当我自定义排序顺序以最后处理空值时,我需要使用 attr_name 而不是仅 name

像这样:

@result = @q.result.except(:order).order("#{@q.sorts.first.attr_name} #{@q.sorts.first.dir} NULLS LAST")