Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

rails 4.2.8からrails 5.0.1にupgradeしたら特定のactionから取得したDataのカラムがnilになる

Q&A

Closed

rails 4.2.8からrails 5.0.1にupgradeしたら以下のような事象が発生しました。

※ 前提条件として、Userは事前に試験申し込みに必要な最低限の情報は登録している。
Userが試験を申し込み ExaminationEntriesController の create actionが走る時、Profile model の validates :birthed_at, presence: trueに引っかかります。

new action -> new view -> confirm action -> confirm view -> create action
と遷移していく中で、それぞれのactionにbinding.pryを挟み current_user.profile.birted_at で生年月日情報を取得したら
以下のような結果になりました。(コード内にコメントアウトで記述)
なぜ、create actionからprofileを呼び出した時のみbithed_atが nil になるのか原因がわからず困っています。
なにか、デバッグのアドバイスを頂けないでしょうか。
gemのどれかのversionが上がったことが起因して起きているエラーかと推測しています。
よろしくおねがいします。

なお、create actionで binding.pry 以前にprofileをsave updateする記述はありません。

ExaminationEntriesController
class ExaminationEntriesController < ApplicationController
  before_action :require_not_qualified!
  before_action :set_examination_entry, only: %i(new confirm create)
  before_action :set_attributes_with_params, only: %i(confirm create)
  before_action :load_examination_entry, only: %i(edit update)

  def new
    binding.pry
    ### current_user.profile.birthed_at  > Mon, 06 Jun 1966
  end

  def confirm
    ee = @examination_entry
    context = "#{ee.entry_type}_entry".to_sym
    render(:new) && return unless ee.valid? && ee.profile.valid?(context)
    binding.pry

    ### current_user.profile.birthed_at  > Mon, 06 Jun 1966
  end

  def create
    ee = @examination_entry
    context = "#{ee.entry_type}_entry".to_sym
    binding.pry
    if params[:back] || !ee.save || !ee.profile.save(context: context)
      render(:new) && return
    end
    ExaminationEntryMailer.created(ee).deliver_now!

    ### current_user.profile.birthed_at  > nil
   ### User.find(16).profile .birthed_at  >  Mon, 06 Jun 1966
  end

...
Gemfile
 source 'https://rubygems.org'

+ruby "2.7.4"
-ruby "2.5.3"

+gem 'rails', '5.0.1'
-gem 'rails', '4.2.8'

 gem 'clockwork'
+gem 'coffee-rails'
-gem 'coffee-rails', '~> 4.1.0'
 gem 'date_select_separator'
 gem 'default_value_for'
 gem 'devise'
 gem 'devise-i18n'
 gem 'enumerize'
 gem 'haml-rails'
 gem 'hamlit'
+gem 'jbuilder'
-gem 'jbuilder', '~> 2.0'
 gem 'jquery-rails'
 gem 'pg', '~> 0.18.2'
+gem 'config'
+gem 'rails_script', '~> 0.6.1'
-gem 'config', github: 'railsconfig/config'
-gem 'rails_script', '~> 0.6.1'
 gem 'restforce'
 gem 'salesforce_bulk_api'
+gem 'sass-rails'
+gem 'sdoc'
+gem 'turbolinks', '~> 2.5.3'
+gem 'uglifier'
-gem 'sass-rails', '~> 6'
-gem 'sdoc', '~> 0.4.0', group: :doc
-gem 'turbolinks', '~> 2.5.3'
-gem 'uglifier', '>= 1.3.0'
 gem 'valid_email'
 gem 'rinku'
 gem 'metamagic'

 group :development, :test do
   gem 'pry'
   gem 'pry-byebug'
   gem 'pry-rails'
-  gem 'quiet_assets'
   gem 'rspec'
   gem 'rspec-rails'
   gem 'spring'
 group :development, :test do
   gem 'thin'
   gem 'turnip'
   gem 'dotenv-rails'
+  gem 'rails-controller-testing'
 end

 group :development do
   gem 'letter_opener'
+  gem 'letter_opener_web'
+  gem 'web-console'
-  gem 'letter_opener_web', '~> 1.2.0'
-  gem 'web-console', '~> 2.0'
   gem 'better_errors'
   gem 'binding_of_caller'
+  gem "rails5-spec-converter"
 end
0

No Answers yet.

Your answer might help someone💌