gpt4 book ai didi

ruby-on-rails - 使用 ActiveRecord 在 PostgreSQL 中匹配数组值

转载 作者:行者123 更新时间:2023-11-29 11:28:32 28 4
gpt4 key购买 nike

在我的 Rails 4 应用程序中,我的目标是查看所有联系人,联系人表中的字段 visible_to 等于 1。我的 visible_to:integer,数组:真

但是,我得到以下异常:

PG::UndefinedFunction: 错误: 运算符不存在: integer[] = integer
第 1 行:....* FROM "contacts"WHERE "contacts"."visible_to"IN (1) OR...
^
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。:SELECT "contacts".* FROM "contacts"WHERE "contacts"."visible_to"IN (1) ORDER BY created_at DESC

我搜索了答案,据我所知,visible_to 类型存在问题。但是,我找不到解决方案。我也试图从转换提示中获益,但徒劳无功。

我的迁移:

class AddVisibleToToContacts < ActiveRecord::Migration
def change
add_column :contacts, :visible_to, :integer, array: true, default: [], using: 'gin'
end
end

来自 Controller 的相关变量:

@contacts_all_user_sorted = Contact.all.where(visible_to: [1]).order("created_at DESC")

最佳答案

来自这两个网站:

看起来这个语法应该有效:

@contacts_all_user_sorted = Contact.all.where("visible_to @> ARRAY[?]", [1])

有用吗?

P.S:正如@Quertie 在评论中指出的那样,您可能希望通过将 ARRAY[?] 替换为 ARRAY[?] 来转换字符串数组中的值::varchar[]

关于ruby-on-rails - 使用 ActiveRecord 在 PostgreSQL 中匹配数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202443/

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