метод rails app current_user не работает в рабочей среде

#ruby-on-rails #ruby #session

#ruby-on-rails #ruby #сеанс

Вопрос:

Привет, я довольно новичок в программировании, и я создаю приложение rails / react habit builder. При запуске на локальном сервере все работает нормально. Однако я переключил базу данных на postgres и развернул в heroku, и почти все работает, за исключением действия create в одном из моих контроллеров.

             def create 
                current_user.identities.build(identity_params)
                if identity.save
                    render json: IdentitySerializer.new(identity).serialized_json
                else
                    render json: { error: identity.errors.messages }, status: 422
                end
            end
  

вот мой current_method

     def current_user
      @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end
  

вот ошибка в моем журнале heroku

 2020-11-16T16:14:03.944788 00:00 heroku[router]: at=info method=GET path="/api/v1/categories" host=atomic-habits-app.herokuapp.com request_id=94543abb-1522-464f-9c8e-44e7bc6f765b fwd="68.199.184.23" dyno=web.1 connect=1ms service=103ms status=304 bytes=445 protocol=https
2020-11-16T16:14:16.585828 00:00 app[web.1]: I, [2020-11-16T16:14:16.585700 #8]  INFO -- : [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b] Started POST "/api/v1/identities" for 68.199.184.23 at 2020-11-16 16:14:16  0000
2020-11-16T16:14:16.587457 00:00 app[web.1]: I, [2020-11-16T16:14:16.587389 #8]  INFO -- : [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b] Processing by Api::V1::IdentitiesController#create as HTML
2020-11-16T16:14:16.587570 00:00 app[web.1]: I, [2020-11-16T16:14:16.587508 #8]  INFO -- : [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b]   Parameters: {"identity"=>{"category_id"=>"1", "name"=>"test", "description"=>"test", "standard"=>"7"}}
2020-11-16T16:14:16.590058 00:00 app[web.1]: I, [2020-11-16T16:14:16.589975 #8]  INFO -- : [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b] Completed 500 Internal Server Error in 2ms (Allocations: 570)
2020-11-16T16:14:16.591415 00:00 app[web.1]: F, [2020-11-16T16:14:16.591334 #8] FATAL -- : [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b]
2020-11-16T16:14:16.591416 00:00 app[web.1]: [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b] NoMethodError (undefined method `identities' for nil:NilClass):
2020-11-16T16:14:16.591417 00:00 app[web.1]: [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b]
2020-11-16T16:14:16.591417 00:00 app[web.1]: [f2c1ff5a-c6b8-4304-89a4-7174caed6c0b] app/controllers/api/v1/identities_controller.rb:17:in `create'
2020-11-16T16:14:16.592938 00:00 heroku[router]: at=info method=POST path="/api/v1/identities" host=atomic-habits-app.herokuapp.com request_id=f2c1ff5a-c6b8-4304-89a4-7174caed6c0b fwd="68.199.184.23" dyno=web.1 connect=0ms service=9ms status=500 bytes=1841 protocol=https
  

И опять же, это действие создания отлично работает, когда я запускаю его на своем локальном сервере. А в рабочей среде метод create работает для регистрации пользователя и создания сеанса. И при создании сеанса я подключаюсь к консоли.запишите ответ от контроллера сеансов, который включает

 render json: {
          logged_in: true,
          current: current_user, 
          user: @user
        }
  

И текущий пользовательский объект регистрируется в консоли при входе в систему.
Поэтому я не уверен, связана ли проблема с отношениями между идентификаторами и пользователями (у пользователя много идентификаторов) или есть проблема, связанная с сеансами в рабочей среде? Я действительно не продвинулся в отладке этого. Любые идеи или советы очень ценятся. Извините, если я пропустил какой-либо необходимый код. Вот ссылки на repo и heroku
https://atomic-habits-app.herokuapp.com/https://github.com/mattkuras/Habit-Helper

Редактировать**

Спасибо Eyeslandic за этот ответ, похоже, он работает.

«Rails.application.config.session_store:cookie_store, ключ: ‘_habit-helper’, домен: ‘localhost:3000’ может быть проблемой, особенно со ссылкой на порт 3000»

Я изменил порт 3000 на:all в моем config/initializers/session_store.rb. Файл cookie не был установлен должным образом

Комментарии:

1. Rails.application.config.session_store :cookie_store, key: '_habit-helper', domain: 'localhost:3000' может быть проблема, особенно в ссылке на порт 3000

2. это решило проблему!