ActiveRecord Rails 4,如何查看数组属性是否包含数组中的任何值

加罗山

假设我有一个Book模型,它的category属性是一个数组。我想创建一个范围,在其中我可以从要传递的另一个数组中获取所有包含至少一项的书籍。

经过广泛的搜索并尝试了许多不同的查询之后,我发现的最接近的是:

Book.where("'Mystery' = ANY(categories)")

如何将“神秘”替换为类似的东西,['Categ1', 'Categ2', etc...]以便可以检索包含数组中至少一个值的任何Book?

亩太短

您需要了解三件事:

  1. PostgreSQL的数组与运算符:重叠&&array1 && array2如果两个数组具有相同的元素,则为true。
  2. PostgreSQL的数组构造函数语法,即array[v1, v2, v3]
  3. 如果占位符的值是Ruby数组,则ActiveRecord将用?逗号分隔的列表替换该占位符,以便在到达数据库时where('c = any(array[?])', [1,2,3])看起来像c = any(array[1,2,3])它。

如果将所有这些放在一起,就会得到如下信息:

categories = %w[Categ1 Categ2 Categ3]
Book.where('categories && array[?]', categories)

您的范围将是这样的:

scope :with_any_categories, ->(cats) { where('categories && array[?]', cats) }

也许:

scope :with_any_categories, ->(*cats) { where('categories && array[?]', cats.flatten) }

取决于您要如何使用示波器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

禁用ActiveRecord for Rails 4

来自分类Dev

rails 4 ActiveRecord :: StatementInvalid

来自分类Dev

Rails 4 ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4 ActiveRecord组

来自分类Dev

rails 4 ActiveRecord :: StatementInvalid

来自分类Dev

Rails中的ActiveRecord查询

来自分类Dev

Rails 4中的ActiveRecord :: AssociationTypeMismatch

来自分类Dev

使用ActiveRecord的Rails虚拟属性

来自分类Dev

使用ActiveRecord的Rails虚拟属性

来自分类Dev

Rails 4多个ActiveRecord关联

来自分类Dev

Rails 4茧ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4 ActiveRecord多个查询

来自分类Dev

Rails 4错误:ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails中的ActiveRecord回滚

来自分类Dev

Rails ActiveRecord中的组查询

来自分类Dev

在Ruby on Rails中查看ActiveRecord模型字段

来自分类Dev

Rails ActiveRecord的“哪里”通过数组搜索

来自分类Dev

动态查询不同的值rails 4 activerecord

来自分类Dev

ActiveRecord视图与表(在Rails 4中)

来自分类Dev

Rails 4 ActiveRecord搜索中的数据迭代

来自分类Dev

Rails 4 ActiveRecord搜索中的数据迭代

来自分类Dev

Rails-ActiveRecord包含多个级别

来自分类Dev

在Rails中转换ActiveRecord模型属性

来自分类Dev

Rails ActiveRecord ID的最大可能值

来自分类Dev

Rails:基于关联值的ActiveRecord查询

来自分类Dev

Rails ActiveRecord ID的最大可能值

来自分类Dev

Rails Activerecord不返回值

来自分类Dev

ActiveRecord信誉系统宝石与Rails 4

来自分类Dev

rails 4 activerecord TypeError nil不是符号