撰写具有字符串条件数组的ActiveRecord查询

时间:2017-04-28 07:43:39

标签: ruby-on-rails arrays ruby loops activerecord

我有一个字符串数组,可用作模型中where调用的参数。 如何在模型where调用中附加每个字符串,并为其他limit调用返回有效记录关系

我尝试了以下内容,但它只将第一项添加到where子句

array = ['active = true', 'expired = false', 'created_at > 2017-04-18 10:36:28']
array.reduce { | item | Post.where(item) }

返回

Posts.where('active = true')

而我正在乞求

Posts.where('active = true').where('expired = false').where('created_at > 2017-04-18 10:36:28')

感谢。

1 个答案:

答案 0 :(得分:3)

join个数组元素放入一个字符串中:

array.join(' AND ')
#=> "active = true AND expired = false AND created_at > 2017-04-18 10:36:28"

并使用它:

Post.where(array.join(' AND '))

P.S。

created_at > 2017-04-18 10:36:28可能会给您一个语法错误,但这不是问题的范围。