Добавьте это в свой файл /config/initilizers/session_store.rb:
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all
'domain: all' создает cookie для всех различных поддоменов, которые посещаются во время этого сеанса (и гарантирует, что они передаются между запросами). Если аргумент домена не передан, это означает, что для каждого отдельного домена, который посещается в одном сеансе, создается новый файл cookie, а старый удаляется.
В конечном счете, tld_length (длина домена верхнего уровня) в этом выражении. Значение по умолчанию tld_length равно 1, в то время как manager.example.come имеет значение tld_length 2, а 127.0.0.1.example.com имеет значение tld_length 5, например. Итак, то, что у меня было в файле session_store.rb для поддоменов на example.com в разработке и все остальное в работе, было ниже.
AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all, tld_length: 2
Для настройки для каждой среды вы можете использовать следующее:
Rails.application.config.session_store :cookie_store, key: '_my_app_session', domain: {
production: '.example.com',
development: '.example.dev'
}.fetch(Rails.env.to_sym, :all)
Источник: https://github.com/plataformatec/devise/wiki/How-To:-Use-subdomains