sql – 如何查询存储在数组中的Rails ActiveRecord数据
发布时间:2021-01-09 08:49:20 所属栏目:MsSql教程 来源:网络整理
导读:我有一个rails模型调用MentorData,它有一个名为os_usage的属性. ose存储在一个像[‘apple’,’ linux‘]这样的数组中. 回顾一下: $MentorData.first.os_usage= ['apple','linux'] 我希望能够查询包含苹果os_usage的所有MentorData的数据,但是当我搜索MentorD
|
我有一个rails模型调用MentorData,它有一个名为os_usage的属性. ose存储在一个像[‘apple’,’ linux‘]这样的数组中. 回顾一下: $MentorData.first.os_usage => ['apple','linux'] 我希望能够查询包含苹果os_usage的所有MentorData的数据,但是当我搜索MentorData.where(os_usage:’apple’)时,我只会得到只能使用苹果而不是苹果和Linux的导师.我需要以某种方式搜索,检查数组中是否包含apple. 我也尝试了以下内容. MentorData.where('os_usage like ?','apple’)
MentorData.where('os_usage contains ?','apple’)
MentorData.where('os_usage contains @>ARRAY[?]','apple')
是否可以通过具有数组或项的属性在ActiveRecord中查询数据? 如果这有助于提供更原始的搜索查询,则数据库位于Postgres上. 解决方法以下是当前 Rails Edge Guides中给出的示例:# 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") (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 全功能口袋U盘带领市场潮流!
- sql-server – 关于作为Head Blocker的SQL连接,我该怎么办?
- sql-server – 为什么LEN()函数严重低估了SQL Server 2014中
- 揭秘云梦如何借力阿里云云市场创富千万
- QQ多项服务突然失效 腾讯首次向用户公开致歉
- 阻断恶意病毒攻击"三要素":隔离.遏制.消灭
- sql-server – 将SQL Server数据库从旧生产服务器移动到新服
- 阿里集团发Q4财报 阿里云业务三连翻
- sql – 如何重用SELECT,WHERE和ORDER BY子句的结果?
- sql-server-2012 – 如何卸载SQL Server Management Studio
