我正在尝试联系两个领域,然后使用背包进行搜索。我有一个用户模型和两个字段: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节点。。
答案 0 :(得分: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
这解决了问题。