我不确定如何编写查询。问题:
我有两个表格,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[]
所述
答案 0 :(得分:4)
您可能希望使用overlap
运算符而不是contain
。 contain
运算符A @> B
表示A包含B的所有元素。如果我了解您尝试执行的操作,则需要检查Notice
的标记数组是否包含任何当前权威的标签。
你可以这样做:
@noticias = Notice.where('tags && ARRAY[?]', current_authority.tags)
以下是Postgres中所有数组函数的链接: http://postgresql.org/docs/current/static/functions-array.html