【问题标题】:Complex Postgres SQL to RoR ORM复杂的 Postgres SQL 到 RoR ORM
【发布时间】:2013-03-28 23:30:42
【问题描述】:

环境:RoR 3.2 + Postgres

我创建了一个带有 2 个文本属性的 services 表: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 

【问题讨论】:

    标签: sql ruby-on-rails postgresql orm


    【解决方案1】:
    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

    【讨论】:

    • 很好,我倾向于对任何变量元素使用双引号和字符串插值。
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2013-06-09
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多