【问题标题】:use subquery in rails 4在 Rails 4 中使用子查询
【发布时间】:2015-08-10 07:20:11
【问题描述】:

我有以下两个子查询:

    @sub= ShareDetail.where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous')

    @sub1= ShareDetail.where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current')

在模型中:

  class ShareHolder < ActiveRecord::Base 
  has_many :share_details,:dependent=>:destroy  
  end

我想在

中使用这些子查询
 @shareHolders= ShareHolder.where(:client_id=>session[:shareinvestor_user_id]).......

我不知道如何使用这些子查询。请帮帮我。

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    你试过scopes吗?

    class ShareHolder < ActiveRecord::Base 
      has_many :share_details,:dependent=>:destroy
      scope :sub, -> { where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous') }
      scope :sub1, -> { where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current') }
    end
    

    那么你可以使用这个:

    @shareHolders= ShareHolder.where(:client_id=>session[:shareinvestor_user_id]).sub
    

    更新

    class ShareHolder < ActiveRecord::Base 
      has_many :share_details,:dependent=>:destroy
    end
    
    class ShareDetail < ActiveRecord::Base
      scope :sub, -> { where(:dump_date_id=>2,:file_from_id=>1).select('TotalShares AS previous').group('previous') }
      scope :sub1, -> { where(:dump_date_id=>1,:file_from_id=>1).select('TotalShares AS current').group('current') }
    end
    

    还有这个:

    @shareDetails= ShareHolder.find_by(client_id: session[:shareinvestor_user_id]).share_details.sub
    

    【讨论】:

    • 得到类似'Mysql2::Error: Unknown column 'previous''的错误
    猜你喜欢
    • 2015-09-04
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多