【问题标题】:Compose an ActiveRecord query having array of string conditions编写具有字符串条件数组的 ActiveRecord 查询
【发布时间】:2017-09-26 06:00:58
【问题描述】:

我有一个字符串数组,用作模型中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')

谢谢。

【问题讨论】:

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


    【解决方案1】:

    只需将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 可能会引发语法错误,但这超出了问题的范围。

    【讨论】:

    • 你的意思是AND,不是,,否则你需要一个哈希
    • 早安兄弟^_^
    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 2018-03-10
    • 2018-08-14
    • 2015-02-09
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多