1

环境:RoR 3.2 + Postgres

我创建了一个services具有 2 个文本属性的表:titledescription

我要操作以下全文搜索:

SELECT * FROM (
        SELECT DISTINCT ON (s.id) s.*, 
            ts_rank_cd(s.service_tsv, query) AS rank 
        FROM to_tsquery('red | drawing | fun') AS query, 
            services AS s
        WHERE (s.service_tsv @@ query)
        ORDER BY s.id DESC
) AS sub ORDER BY rank DESC;

SQL 语句就像一个魅力,但我如何将其转换为 Rails ORM:

Service.joins(???).where(???).uniq 
4

1 回答 1

2
Service.find_by_sql(%q{SELECT * FROM (
        SELECT DISTINCT ON (s.id) s.*, 
            ts_rank_cd(s.service_tsv, query) AS rank 
        FROM to_tsquery('red | drawing | fun') AS query, 
            services AS s
        WHERE (s.service_tsv @@ query)
        ORDER BY s.id DESC
) AS sub ORDER BY rank DESC})

此处指南http://guides.rubyonrails.org/active_record_querying.html#finding-by-sql

于 2013-03-29T01:13:38.537 回答