Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在active admin中按多个hstore键进行筛选_Ruby On Rails_Postgresql_Activeadmin_Ransack - Fatal编程技术网

Ruby on rails 在active admin中按多个hstore键进行筛选

Ruby on rails 在active admin中按多个hstore键进行筛选,ruby-on-rails,postgresql,activeadmin,ransack,Ruby On Rails,Postgresql,Activeadmin,Ransack,我正在尝试为hstore字段添加自定义筛选字段 在activeadmin中:filter:by_title,标签:'title',as::string 在模型中: ransacker :by_title do |parent| Arel::Nodes::InfixOperation.new('->', parent.table[:title_translations], Arel::Nodes.build_quoted('en')) end 此代码正在搜索并根据activead

我正在尝试为
hstore
字段添加自定义筛选字段

在activeadmin中:
filter:by_title,标签:'title',as::string

在模型中:

ransacker :by_title do |parent|
  Arel::Nodes::InfixOperation.new('->', 
  parent.table[:title_translations], Arel::Nodes.build_quoted('en'))
end
此代码正在搜索并根据activeadmin选择创建正确的查询(包含、等于、以开头或以结尾)


我使用hstore存储多个地区的标题。我想搜索所有区域设置。不仅
en
,而且
fr
es
ru
,等等

我最后使用的是这样一个自定义范围:

# Ransackable Scopes
def self.ransackable_scopes(_auth_object = nil)
  [:by_title]
end

# My scopes
scope :by_title, ->(search_term) { by_field(search_term, :title) }

scope :by_field, lambda { |search_term, field|
  where("#{field}_translations -> :key ILIKE :value", key: :en, value: "%#{search_term}%")
    .or(where("#{field}_translations -> :key ILIKE :value", key: :fr, value: "%#{search_term}%"))
    .or(where("#{field}_translations -> :key ILIKE :value", key: :de, value: "%#{search_term}%"))
}

它并没有完全回答这个问题,但它是一个适合我需要的解决方案。

您查看了吗?谢谢,我正在搜索解决方案,以便在我的active Admin中为jsonb数据添加过滤器,这节省了我的时间