2011-08-12 24 views
1

Texticleを設定しようとしましたが、移行時にこのエラーが発生しました。エラーmsgが、私はこれは私の移行スキーマが存在しません。PostgresqlとTexticleのエラー

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 

Imは私のローカルホストPSQLでこれを実行している< < < <

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 

でマークされた行を参照しています。どうすればこの問題を回避できますか?

+1

'half_links.item.name'とはどういう意味ですか? –

答えて

1

エラーは2番目の選択です。 half_links.item.nameは、半分のリンクがスキーマ名であると仮定します(正しい構文は..)

あなたの関連性がどのようになっているかを見れば、半分のリンクに属するアイテムの名前を得ることになります。 PostgresはRailsの団体がどのように機能するかについては考えているので

、あなたは、データ自分自身を取得する必要があります。これはitemsからhalf_linksの外部キーは、それがあればあるべきitem_idと呼ばれていることを想定している

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 

Railsの移行を使用してテーブルを作成しました。

さらに、実際に項目が関連付けられているhalf_linksが表示されます。項目がない項目がある場合は、joinouter joinに変更します。これらの場合、TermはNULLになります。

+0

あなたは爪の上でそれを打つ。よくやった! – Julien

関連する問題