Упорядочение записей по присутствию ассоциации - PullRequest
0 голосов
/ 12 апреля 2019

Допустим, у меня есть таблица 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 голосов
/ 12 апреля 2019

Да, вы можете достичь этого с помощью 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")

Счастливое кодирование:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...