gpt4 book ai didi

sql - 如何查询存储在数组中的 Rails ActiveRecord 数据

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:19 25 4
gpt4 key购买 nike

我有一个名为 MentorData 的 Rails 模型,它有一个名为 os_usage 的属性。这些 ose 存储在一个数组中,就像这样 ['apple', 'linux']

回顾一下:

$ MentorData.first.os_usage
=> ['apple', 'linux']

我希望能够查询所有 MentorData 的数据,包括 apple 的 os_usage,但是当我搜索 MentorData.where(os_usage: 'apple') 我只得到只会用apple不会用apple和linux的导师。我需要以某种方式进行搜索以检查苹果是否包含在数组中。

我也试过以下方法。

MentorData.where('os_usage like ?', 'apple’)
MentorData.where('os_usage contains ?', 'apple’)
MentorData.where('os_usage contains @>ARRAY[?]', 'apple')

是否可以通过具有数组或项的属性来查询 ActiveRecord 中的数据?

如果有助于提供更原始的搜索查询,则数据库位于 Postgres 上。

最佳答案

以下是当前 Rails Edge Guides 中给出的示例对于 PostgreSQL:

# db/migrate/20140207133952_create_books.rb
create_table :books do |t|
t.string 'title'
t.string 'tags', array: true
t.integer 'ratings', array: true
end
add_index :books, :tags, using: 'gin'
add_index :books, :ratings, using: 'gin'

# app/models/book.rb
class Book < ActiveRecord::Base
end

# Usage
Book.create title: "Brave New World",
tags: ["fantasy", "fiction"],
ratings: [4, 5]

## Books for a single tag
Book.where("'fantasy' = ANY (tags)")

## Books for multiple tags
Book.where("tags @> ARRAY[?]::varchar[]", ["fantasy", "fiction"])

## Books with 3 or more ratings
Book.where("array_length(ratings, 1) >= 3")

关于sql - 如何查询存储在数组中的 Rails ActiveRecord 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com