【问题标题】:Ransack custom sorting not worksRansack 自定义排序不起作用
【发布时间】:2018-10-05 14:03:00
【问题描述】:

我无法为洗劫创建自定义排序(按范围)。尝试按照教程说的做,但没有成功。

我的模型中有下一个代码。

scope :sort_by_custom_name_asc, -> { order('"core_people"."phone" ASC') }

范围有效的证明,在 ransack 中按电话排序有效,但 custom_name 排序无效。

Core::Person.ransack(s: 'custom_name asc').result.to_sql
#=> "SELECT \"core_people\".* FROM \"core_people\""

Core::Person.ransack(s: 'phone asc').result.to_sql
#=> "SELECT \"core_people\".* FROM \"core_people\" ORDER BYY\"core_people\".\"phone\" ASC"

Core::Person.sort_by_custom_name_asc.to_sql
#=> "SELECT \"core_people\".* FROM \"core_people\" ORDER BY \"core_people\".\"phone\" ASC"

【问题讨论】:

  • 什么是custom_name?它是您数据库中的一列吗?
  • 不,只是一块范围
  • 范围:sort_by_custom_name_asc,-> { order('"core_people"."phone" ASC') }
  • 在教程中说应该带有 sort_by_ 前缀和 _asc 或 _desc 后缀。
  • 您介意链接教程吗?是官方wiki吗?

标签: ruby ransack meta-search


【解决方案1】:

我找到了另一种方法来做到这一点。 现在可以从 ransack 中按 custom_name 排序。

ransacker :custom_name do |_|
  Arel::Nodes::SqlLiteral.new('"core_people"."phone"')
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2014-11-14
    相关资源
    最近更新 更多