【问题标题】:Active record query interface in Ruby [closed]Ruby 中的活动记录查询接口 [关闭]
【发布时间】:2017-11-03 14:17:55
【问题描述】:

有人可以帮助我编写这个自定义查询和 Active Record 查询接口吗?我还是 Ruby 的新手,我读到 Active Record 接口查询适用于大多数数据库,所以推荐它。提前谢谢你

sql = "select count(distinct(email)) as rcount from resources r
           inner join capabilities c
           on c.resource_id = r.id
           inner join skills s
           on c.skill_id = s.id "
sql += " where " unless (params[:country_id].to_i.zero? && params[:skill_id].to_i.zero?)

sql += "r.nationality = '" + Country.get_country_name(params[:country_id]) + "'" unless (params[:country_id].to_i.zero?)

sql += " and " unless (params[:country_id].to_i.zero? || params[:skill_id].to_i.zero?)

sql += "s.id =" + params[:skill_id] unless (params[:skill_id].to_i.zero?)

【问题讨论】:

    标签: mysql sql ruby-on-rails ruby


    【解决方案1】:

    假设您的模型的关系设置正确。这是您的 sql 的ActiveRecord 翻译。

    Resource.select(:email).joins(capabilities: :skills).distinct.count
    

    【讨论】:

      【解决方案2】:

      您可以直接在模型上使用ActiveRecord::Querying#find_by_sql

      例子:

      Post.find_by_sql "SELECT p.title, c.author FROM posts p, comments c WHERE p.id = c.post_id"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        相关资源
        最近更新 更多