相关疑难解决方法(0)

如何通过ransack gem搜索数组?

我正在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)

ruby postgresql activerecord ruby-on-rails ransack

3
推荐指数
1
解决办法
2009
查看次数

标签 统计

activerecord ×1

postgresql ×1

ransack ×1

ruby ×1

ruby-on-rails ×1