1

環境: RoR 3.2 + Postgres

services2 つのテキスト属性を持つテーブルを作成しました: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 に答える