Как использовать символ для вызова поиска активной записи - PullRequest
0 голосов
/ 28 августа 2018

Во-первых, пожалуйста, извините за плохое название. Я знаю, что хочу решить, но не думаю, что у меня есть правильный язык для адекватного описания проблемы.

У меня есть база данных, в которой каждый учебный курс может относиться либо к «учебному», либо к «целевому» стилю обучения. В настоящий момент я сохраняю эту информацию (Учебник или Targeted), в зависимости от выбора пользователя, в файле cookie.

Я извлекаю эту информацию и, в зависимости от значения, хочу искать записи, относящиеся либо к учебнику, либо к целевому идентификатору.

На данный момент у меня есть следующий код:

case coursetype
  when "textbook"
    activecourses = Course.find(topicid).textbook_children.where(active: true).order(:id)
    @lessons = Video.joins(:textbook_parent).where('courses.id' => activecourses.pluck(:id)).order(:id)
  else
    activecourses = Course.find(topicid).targeted_children.where(active: true).order(:id)
    @lessons = Video.joins(:targeted_parent).where('courses.id' => activecourses.pluck(:id)).order(:id)
 end

Что не очень сухо.

Я в основном хочу написать:

activecourses = Course.find(topicid).targeted_children.where(active: true).order(:id)

Где target_children или textbook_children - это некая форма текстовой строки, которая становится символом (если это правильно), но не знает, как это сделать.

Любая помощь будет принята с благодарностью.

Извините, если я все еще не проясняю.

PS. Я самоучка много рубина и рельсов. Я уверен, что код мог бы быть написан намного лучше ... Я бы убил, чтобы работать с кем-то, кто мог бы помочь мне улучшить ... но ... пожалуйста, не судите !!

1 Ответ

0 голосов
/ 28 августа 2018

Везде, где вы ссылаетесь на символ или строку, вы можете заменить ее переменной, содержащей символ или строку.

parent_type = (coursetype == 'textbook' ? :textbook_parent : :targeted_parent)
activecourses = Course.find(topicid).textbook_children.where(active: true).order(:id)
@lessons = Video.joins(parent_type).where('courses.id' => activecourses.pluck(:id)).order(:id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...