Rails按两个不同的关联顺序排列

时间:2015-03-26 19:54:04

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

如何从两个不同的列中进行排序?

def order_by_percentage
  joins(:school_annual_data).order('school_annual_data.survey3_low_percent DESC')
  joins(:school_eligibility_data).order('school_eligibility_data.low_income_percent DESC')   
end 

如果joins(:school_eligibility_data).order('school_eligibility_data.low_income_percent DESC')为零,我想按joins(:school_eligibility_data).order('school_eligibility_data.low_income_percent DESC')

排序

1 个答案:

答案 0 :(得分:2)

class YourModel
    scope :survey3, -> { where(survey3_low_percent: nil).reorder(low_income_percent: :desc) }
    scope :low, -> { where(low_income_percent: nil).reorder(survey3_low_percent: :desc) }

    def self.new_order
        survey3.to_a + low.to_a
    end
end

joins(:school_annual_data).order("COALESCE(school_annual_data.survey3_low_perce‌​nt, school_eligibility_data.low_income_percent)")

这就像survey3_low_perce‌​nt || low_income_percent