如何从两个不同的列中进行排序?
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')
答案 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_percent, school_eligibility_data.low_income_percent)")
这就像survey3_low_percent || low_income_percent