Ransack排序属性名称上的嵌套Assosiation

时间:2016-02-28 00:56:47

标签: ruby-on-rails ransack

我有一个名为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

是否有人知道如何在仍然排序空值的同时允许嵌套列排序?

1 个答案:

答案 0 :(得分:0)

好的,现在我在链接的问题/答案中找到了解决方案(再次与github问题相关联)。

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

像这样:

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