gpt4 book ai didi

ruby-on-rails - Postgresql 和 Texticle 的架构不存在错误

转载 作者:行者123 更新时间:2023-11-29 13:37:10 25 4
gpt4 key购买 nike

我尝试配置 Texticle并在迁移时遇到此错误。错误消息指的是我用 <<<<

标记的行
PGError: ERROR:  schema "half_links" does not exist
: CREATE VIEW searches AS
SELECT items.id AS searchable_id, items.name AS term,
CAST('Item' AS varchar) AS searchable_type
FROM items
UNION
SELECT half_links.id AS searchable_id, half_links.item.name AS term, <<<<
CAST('HalfLink' AS varchar) AS searchable_type
FROM half_links

这是我的迁移

class CreateSearches < ActiveRecord::Migration
def self.up
ActiveRecord::Base.connection.execute <<-SQL
CREATE VIEW searches AS
SELECT items.id AS searchable_id, items.name AS term,
CAST('Item' AS varchar) AS searchable_type
FROM items
UNION
SELECT half_links.id AS searchable_id, half_links.item.name AS term,
CAST('HalfLink' AS varchar) AS searchable_type
FROM half_links
SQL
end

和模型

:half_link belongs_to :item
:item has_many :half_links

我在我的本地主机 PSQL 上运行它。我该如何解决这个问题?

最佳答案

错误在第二次选择。 half_links.item.name 使 Postgres 假定 half_links 是模式名称(正确的语法是..)

看你的关联情况,我猜你的意思是获取属于 half_links 的项目的名称。

因为 Postgres 不知道 Rails 关联是如何工作的,你需要自己获取数据:

CREATE VIEW searches AS
SELECT items.id AS searchable_id, items.name AS term,
CAST('Item' AS varchar) AS searchable_type
FROM items
UNION
SELECT half_links.id AS searchable_id, items.name AS term,
CAST('HalfLink' AS varchar) AS searchable_type
FROM half_links join items on half_links.item_id = items.id

这是假设 half_linksitems 的外键被称为 item_id 如果您使用 Rails 迁移创建表,它应该是.

此外,这将只显示实际与项目关联的 half_links,如果可能有没有项目的 half_links,则将 join 更改为 outer join 。在这些情况下,Term 将为 NULL。

关于ruby-on-rails - Postgresql 和 Texticle 的架构不存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043807/

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