Ransacker:不支持的参数类型:String。而是构造一个Arel节点

问题描述 投票:0回答:1

我试图联系两个字段,然后搜索使用搜索。我有一个用户模型和两个字段:first_name和last_name,我想使用全名搜索用户。这是我正在使用的:

ransacker :full_name do |parent|
  Arel::Nodes::InfixOperation.new('||',
    Arel::Nodes::InfixOperation.new('||',
      parent.table[:first_name], ' '
    ),
    parent.table[:last_name]
  )
end

但我收到此错误:不支持的参数类型:字符串。而是构造一个Arel节点。将全名传递到搜索字段后。

ruby-on-rails ransack
1个回答
0
投票

我只需用以下代码替换我的代码:

ransacker :full_name, formatter: proc { |v| v.mb_chars.downcase.to_s } do |parent|
  Arel::Nodes::NamedFunction.new('LOWER',
   [Arel::Nodes::NamedFunction.new('concat_ws',
    [Arel::Nodes.build_quoted(' '), parent.table[:first_name], 
  parent.table[:last_name]])])
end

这解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.