我正在ransack gem用于在rails应用程序中搜索.我需要搜索的数组email_ids中的User表.
在洗劫时提到这个问题,我按照步骤将其添加到初始化文件夹中ransack.rb
Ransack.configure do |config|
{
contained_within_array: :contained_within,
contained_within_or_equals_array: :contained_within_or_equals,
contains_array: :contains,
contains_or_equals_array: :contains_or_equals,
overlap_array: :overlap
}.each do |rp, ap|
config.add_predicate rp, arel_predicate: ap, wants_array: true
end
end
Run Code Online (Sandbox Code Playgroud)
在rails控制台中,如果我喜欢这样:
a = User.search(email_contains_array: ['priti@gmail.com'])
Run Code Online (Sandbox Code Playgroud)
它产生这样的sql:
"SELECT \"users\".* FROM \"users\" WHERE \"users\".\"deleted_at\" IS NULL AND (\"users\".\"email\" >> '---\n- priti@gmail.com\n')"
Run Code Online (Sandbox Code Playgroud)
并给出如下错误:
User Load (1.8ms) SELECT "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND ("users"."email" >> '---
- priti@gmail.com
')
ActiveRecord::StatementInvalid: PG::UndefinedFunction: ERROR: operator …Run Code Online (Sandbox Code Playgroud)