2015-07-28 3 views
0

Я прикладываю текстовый поиск postgresql в свое приложение. Когда я ищу конкретный элемент, я получаю сообщение об ошибке.Pg Text Search ~ PG :: UndefinedColumn: ERROR: column 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 

как моя база данных подключается в консоли

Document (ID: UUID, category_id: UUID , 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: DateTime

Это что-то делать с таблицей присоединиться , но я не уверен, как это исправить. Спасибо за вашу помощь.

ответ

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'; ... не будет.