查询rails db列

时间:2016-06-12 07:10:52

标签: ruby-on-rails postgresql activerecord rails-activerecord ruby-on-rails-5

我正在寻找一种类似的方式来查询数据库like this,但却在努力解决我想要的问题。

我不只是寻找答案,我也在寻找你在哪里找到使用的方法。我搜索了postgres db query,rails db query但没有显示符合我想要的内容,甚至关闭。

foo = "a,b,c,d"
b.bar #=> "b,d,a,f,z" Code shorten for the B Class.

B.where('bar like ?', "%#{foo}")

我知道什么都不回报。我希望foo列中包含b.bar的任何值,然后将其返回。

如果foo = "a",我会得到一个结果,但foo可以有多个值。

我正在使用Ruby 2.2.5。 Rails 5. DB:PostgreSQL

如果代码非常简单,将升级到Ruby 2.3。

2 个答案:

答案 0 :(得分:0)

这是查找数组中字段匹配的方法:

B.where(bar: ["a", "b", "c"])

那将使用SQL IN operator

答案 1 :(得分:0)

您应该在实际查询之前做一些前期工作,首先为like列表中分隔的每个项目构建,条件,然后用逻辑or链接它们:

conditions = b.bar.split(',').map{|x| B.arel_table[:bar].matches("%#{x}%") }

B.where conditions.reduce(:or)