2015-07-28 101 views
0

我正在实施postgresql文本搜索到我的应用程序。当我搜索特定项目时,我收到错误。 UUID,CATEGORY_ID:UUIDPg文本搜索〜PG :: UndefinedColumn:错误:列documents.content不存在

SELECT COUNT(*) FROM "documents" INNER JOIN (SELECT "documents"."id" AS pg_search_id, (ts_rank((to_tsvector('english', coalesce("documents"."title"::text, '')) || to_tsvector('english', coalesce("documents"."content"::text, ''))), (to_tsquery('english', ''' ' || 'coffee' || ' ''')), 0)) AS rank FROM "documents" WHERE (((to_tsvector('english', coalesce("documents"."title"::text, '')) || to_tsvector('english', coalesce("documents"."content"::text, ''))) @@ (to_tsquery('english', ''' ' || 'coffee' || ' '''))))) pg_search_documents ON "documents"."id" = pg_search_documents.pg_search_id

在我的文档模型

include PgSearch 
    pg_search_scope :search, :against => [:title, :content], 
    :using => {tsearch: {dictionary: "english"}} 

    def self.text_search(query) 
    if query.present? 
    search(query) 
    else 
    all 
    end 
end 

在我的文档控制器

def load_documents 
    @documents = documents_scope.all.text_search(params[:query]) 
    end 

怎么我的数据库在控制台

文件(ID有线,title:string,created_at:datetime,updated_at:datetime,version_id:uuid)

DocumentVersion(ID:UUID,DOCUMENT_ID:UUID,document_version_id:UUID,USER_ID:UUID,标题:字符串,内容:文字,created_at:日期时间,的updated_at:日期时间

它是与表连接,但我不知道如何解决它。谢谢你的帮助。

回答

0

得到它,在我的模型我通过assosciations

include PgSearch 
    pg_search_scope :search, associated_against: { 
    current_version: %i(title content) 
    } 
0

通常当Postgres的认为在一列数据是列本身,这是因为数据是在双引号中被引用需要范围.. 。将双引号更改为单引号将缓解此问题,但是您的代码太复杂以至于无法复制... select * from <table> where user_id = "e15bde2-6f4b-4299-9e64-82116c719636"; ...将导致此问题,而: select * from <table> where user_id = 'e15bde2-6f4b-4299-9e64-82116c719636'; ...不会。

相关问题