ruby-on-rails - 编写具有字符串条件数组的 ActiveRecord 查询

标签 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')

谢谢。

最佳答案

只需将数组的元素join成一个字符串:

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

并使用它:

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

附言

created_at > 2017-04-18 10:36:28 可能会引发语法错误,但这不在问题范围内。

关于ruby-on-rails - 编写具有字符串条件数组的 ActiveRecord 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674755/

相关文章:

arrays - 合并数组 `x` 和 `y` ,对应于 `x` 的相等元素

ruby-on-rails - 使用 Capistrano 部署时找不到 Puma gem

ruby-on-rails - Ruby on Rails ActiveRecord .anything 在找到后做什么?

ruby-on-rails - Authlogic 密码的安全性如何?

c - 如何在此程序中合并输入数组

ruby-on-rails - Rails I18n 中的惰性查找是一种不好的做法吗?

java - 我们可以在不循环的情况下将映射数组转换为模型实体类[POJO]数组吗?

ruby - 如何为 Ruby 中的哈希列表中的每个键提取更大的值

ruby-on-rails - ruby 1.8 和 1.9 之间的字符串长度差异

ruby-on-rails - 当我发出 ajax 请求时,如何防止浏览器屏幕滚动到顶部?