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

时间:2015-11-13 21:04:59

标签: ruby-on-rails ruby postgresql

我不确定如何编写查询。问题:

我有两个表格,public class UserFull extends User { @Column(name = "email") private String email; @Column(name = "date_birthday") private Date dateBirthday; @Column(name = "date_registration") private Date dateRegistration; authorities每个表格都包含此列:

notices

我需要检查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[]

如此处If array contains value

所述

1 个答案:

答案 0 :(得分:4)

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

你可以这样做:

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

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