Last updated
Last updated
После того, как определили routes, определяют контроллеры (это C в MVC паттерне). Эта сущность находится между слоем отображения (View) и слоем моделей данных (Model).
В Ruby контроллер — класс, наследованный от ApplicationController
(наследован от ActionController::Base
). Когда приложение получает запрос, маршрутизация определяет контроллер и действие для запуска; Rails создает инстанс контроллера и вызывает метод, соответствующий объявленному действию
Доступ к GET/POST параметрам осуществляется через
Позволяет обработать определенный тип эксепшена в текущем и во всех дочерних контроллерах кастомным способом
Функция у params, которая позволяет вернуть только указанный список параметров. Делается для ограничения последующего использования.
Указывает, что параметр обязателен
Your application has a session for each user in. The session is only available in the controller and the view and can use one of several of different storage mechanisms:
ActionDispatch::Session::ActiveRecordStore
- Stores the data in a database using Active Record (requires the activerecord-session_store
gem).
All session stores use a cookie to store a unique ID for each session.
If you need a different session storage mechanism, you can change it in an initializer:
Rails sets up a session key (the name of the cookie) when signing the session data. These can also be changed in an initializer:
You can also pass a :domain
key and specify the domain name for the cookie:
Rails sets up (for the CookieStore) a secret key used for signing the session data in config/credentials.yml.enc
. This can be changed with bin/rails credentials:edit
.
Session values are stored using key/value pairs like a hash:
To store something in the session, just assign it to the key like a hash:
To remove something from the session, delete the key/value pair:
Есть объект flash, который позволяет передать значение только следующему запросу
Отдельный объект для доступа к cookie.
Можно определелить в конфиге, как будут сериализованы значения
Это методы, которые вызываются before, after и around действия контроллера. Фильтры наследуются. Если определить фильтр в ApplicationController, то он будет срабатывать в каждом контроллере вашего приложения:
Если мы хотим скипнуть какой-нибудь фильтр для нашего контроллера:
- Stores everything on the client.
- Stores the data in the Rails cache.
- Stores the data in a memcached cluster (this is a legacy implementation; consider using CacheStore
instead).