Это случай для наследования? - PullRequest
0 голосов
/ 26 августа 2011

У меня есть модели Rails User, ReadingList и SessionReadingList.У пользователя много списков чтения.SessionReadingList - это специальный тип списка чтения, который хранится в сеансе до того, как пользователь зарегистрировался.

В моем ReadingListsController каждое действие имеет вид:

def show
  if current_user
    #load user's reading lists
  else
    #load session reading list from session
  end
end

Я задаюсь вопросом, лучше ли мне подклассы ReadingListsController, поэтому у меня есть, например, SessionReadingListsController и UserReadingListsController.Хотя я не знаю, как бы я справился с маршрутизацией.

Итак, подклассы решения?Если да, могу ли я перенаправить с ReadingListsController в зависимости от current_user?Или есть лучший способ?

1 Ответ

0 голосов
/ 26 августа 2011

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

class LoggedInConstraint < Struct.new(:value)
  def matches?(request)
    request.cookies.key?("user_token") == value
  end
end

match 'reading-list' :to => "reading_list#index", :constraints => LoggedInConstraint.new(true)
match 'reading-list' :to => "session_reading_list#index", :constraints => LoggedInConstraint.new(true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...