通过关联机构订购记录

时间:2019-04-12 11:04:50

标签: sql ruby-on-rails postgresql activerecord ruby-on-rails-5

假设我有一个instructions表,该表通过surveys连接表与survey_instructions表关联。

我需要实现的是获取所有指令记录,但是要根据与给定调查的关联存在来排序。

因此,与给定调查相关的说明将首先显示,然后与该调查没有任何关系的所有其他说明。

class Instruction < ApplicationRecord
  has_many :survey_instructions, dependent: :destroy
  has_many :surveys, through: :survey_instructions
and
class Survey < ApplicationRecord
  has_many :survey_instructions, dependent: :destroy
  has_many :instructions, through: :survey_instructions
and
class SurveyInstruction < ApplicationRecord
  belongs_to :survey
  belongs_to :instruction
and

这可以通过以某种方式链接活动记录查询来实现吗?希望对此有任何想法

1 个答案:

答案 0 :(得分:0)

是的,您可以通过ActiveRecord查询来实现。试试这个:

survay_id = 10
@instructions = Instruction.includes(:survey_instructions).order("(CASE WHEN survey_instructions.survay_id = #{survay_id} THEN 1 ELSE 2 END) ASC NULLS LAST")

快乐编码:)