繁体   English   中英

查询Ruby on Rails和PostgreSQL上的数组类型字段

[英]Query for array type field on Ruby on Rails and PostgreSQL

我不知道怎么写一个查询。 问题:

我有两个表, authoritiesnotices每个都有这个列:

t.string "tags",   default:[],   array:true

我需要检查来自authorities数组的至少一个元素是否在notices数组中,并将其保存在类变量中。 到目前为止,我已经在我的控制器中尝试了这行代码:

@noticias = Notice.where('tags @> ARRAY[?]',current_authority.tags)

我在视图中尝试过类似的东西:

<% @noticias.each do |notice| %>
    <% notice.nombre %>
<% end %>

编辑

谢谢你的答案,但我的问题是

ERROR:  operator does not exist: character varying[] @> text[]

解决方案是:

@noticias = Notice.where('tags && ARRAY[?]::varchar[]',current_authority.tags)

如此处所述, 如果数组包含值

您可能希望使用overlap运算符而不是contain contain运算符A @> B表示A包含A @> B所有元素。如果我理解您要执行的操作,则需要检查Notice的标记数组是否包含当前权限的任何标记。

你可以这样做:

@noticias = Notice.where('tags && ARRAY[?]', current_authority.tags)

这是Postgres中所有数组函数的链接: http//postgresql.org/docs/current/static/functions-array.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM