0

В приложении Rails, которое я создаю, у меня есть код в контроллере, и мне интересно, находится ли он в нужном месте. Код довольно незначителен, он хранит идентификаторы в массиве, чтобы отображать «недавно просмотренные» страницы. Это около 3 строк кода, но я думаю о будущем, что, если эта функция расширяется? Я не хочу, чтобы мой контроллер раздувался.Где я должен хранить код сеанса в приложении Rails?

Я мог бы создать модуль, но в этом случае, где я должен хранить файл? Является ли контроллер правильным местом для управления сеансом? Любые предложения по моей организации кода?

Благодаря

+0

Если вы вставляете код, о котором говорите, это может облегчить для вас реакцию. – rossta

+0

Я думал об этом, но я больше интересовался концепциями организации кода и файлов и не хотел, чтобы люди увязли в синтаксисе. Спасибо, что ответили! Это мой первый вопрос о StackOverflow :) – manderson

ответ

2

Если специфичен к контроллеру, держать его в контроллере.

Если это относится ко всем контроллерам, оно входит в ApplicationController.

Если разделяют некоторые контроллеры и не другие, то наследуют от контроллера, который наследует от ApplicationController или использования включают/продлить или make a module that extendsActiveSupport::Concern (что Rails использует внутренне довольно часто).

и это лучше держать все в app/controllers или какой-либо подкаталог, к югу поддиректории и т.д. Rails самозарядные зависит от пути, чтобы совпасть с пространством имен модуля, так A::B::C принадлежит app/controllers/a/b/c.rb. Не делайте это глубоким, как Java, и т. Д. Просто имейте количество каталогов/модулей, которые вам нужны, чтобы поддерживать его.

Примечание: хотя контроллеры не так проблематичны в своих модулях, по моему опыту ваши модели должны оставаться в корне, например app/models, или у вас будут проблемы.

Я также избегаю слишком много хранить в сеансе, если вы можете помочь ему. Храните в БД (или длинные файлы cookie, если это специфическая среда браузера). Например, если кто-то выходит из системы, и они смотрят на одну запись, они могут захотеть снова войти в систему и иметь список, содержащий ссылку на эту запись.

BTW- вы не спрашивали, и, вероятно, уже есть код для хранения недавно посещенных страниц в сессии, но здесь подобные вопросы/ответы:

+2

Удивительный ответ, спасибо! Это был мой первый вопрос в StackOverflow, и вы дали мне массу хороших советов Rails. – manderson

+0

Добро пожаловать! –

Смежные вопросы