рефакторинг запроса контроллера с If / else - PullRequest
0 голосов
/ 27 февраля 2011

Это то, на что сейчас похоже мое действие индекса. Если current_user не зарегистрирован ни на одном курсе, он перечисляет все курсы. Если он зачислен в какой-либо, он перечисляет только другие. Это хороший способ получить необходимые записи или есть более хороший способ? Какие-либо предложения? Спасибо за ваше время!

if current_user.courses.empty?
  @courses = Course.all
else
  @courses = Course.where("id not in (?)", current_user.courses)
end

Ответы [ 2 ]

1 голос
/ 27 февраля 2011

Вы можете переместить всю эту логику в метод для пользователя:

class User < ActiveRecord::Base
   def courses
      if self.courses.empty?
         @courses = Course.all
      else
         @courses = Course.where("id not in (?)", current_user.courses)
      end  
   end
end

Тогда в вашем контроллере:

@courses = current_user.courses

Вы также можете пересмотреть свою схему и, возможно, вообще избавиться от if / else.

1 голос
/ 27 февраля 2011

Использование:

@user = current_user
@courses = @user.courses.empty? ? Course.all : Course.where("id not in (?)", @user.courses)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...