2011-08-12 17 views
1

我试图配置Texticle并在迁移时遇到此错误。错误味精是指我打上< < < <架构不存在Postgresql和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运行此。我怎样才能解决这个问题?

+1

“half_links.item.name”是什么意思? –

回答

1

错误在第二次选择。 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迁移创建了这些表。

此外,这将只显示实际上具有与其关联的项目的半链接,如果可能有没有项目的项目,则将join更改为outer join。在这些情况下,术语将为NULL。

+0

你在指甲上击中它。做得好! – Julien