ruby-on-rails - Ransacker:不支持的参数类型:字符串。改为构造一个 Arel 节点
问题描述
我正在尝试联系两个字段,然后使用 ransack 进行搜索。我有一个用户模型和两个字段:名字和姓氏,我想使用全名搜索用户。这是我正在使用的:
ransacker :full_name do |parent|
Arel::Nodes::InfixOperation.new('||',
Arel::Nodes::InfixOperation.new('||',
parent.table[:first_name], ' '
),
parent.table[:last_name]
)
end
但我收到此错误:不支持的参数类型:字符串。而是构建一个 Arel 节点。将全名传递到搜索字段后。
解决方案
我只是用以下代码替换我的代码:
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
这解决了这个问题。
推荐阅读
- python - 如何在 Word2Vec 模型中搜索单词
- raspberry-pi3 - 如何使用 yocto 构建实时图像?
- events - 检测某些物体上的任意物理事件。继续轮询世界有多糟糕?
- snowflake-cloud-data-platform - 可以在临时表和临时表上定义集群键吗?
- flutter - 收到终止状态通知时如何运行飞镖代码?
- blazor - 将 BLAZOR 网站发布到 IIS 后出现问题
- django - 如何过滤结果和多对多子?
- python - 将 cursor.fetchone 放到特定行?
- angular - 在 selectionChange mat-select 上过滤 mat-table 的数据不起作用
- react-native - TypeError:未定义不是对象(评估'currentUser.email')