新米パパの育児留学

新米パパの育児留学

『育児留学』とは、育児を通して異なる視点を得たり新しいことに挑戦して自己成長に繋げること。育児奮闘中の新米パパが育児を通して得た気づきや感じたこと、育休中に習得したプログラミングに関する話題を発信していきます。

未経験からエンジニアへ転職した私のキャリア構築プロセス(24週目)

スポンサーリンク

スポンサーリンク

f:id:mochikichi321:20171218132720j:plain

異業種から未経験でエンジニアへ転職し、Ruby(Ruby on Rails)エンジニアとして新しいキャリアがスタートしました。エンジニアとしてのキャリアを構築していくプロセスを綴っていきます。これからエンジニアを目指される方の参考になれば幸いです。

この記事を書く目的

・学んだことをアウトプットすることで理解を深める

・業務/学習の軌跡を残すことで自分が指導する立場になった時にどこでどういうことにつまづいたかがわかり指導しやすくなる

・エンジニアを目指してプログラミングを学習している方がエンジニアの仕事がどんなものかをイメージしやすくなる(会社によるので一例として)

業務

・[rails5.0化対応]ダイナミックルーティング廃止

・Rails5.0,Ruby2.3,2.4の新機能整理

・コードレビュー

学び

belongs_toのデフォルト挙動が変わった(Rails5.0)

  • required: true ⇒nilを許容しない(Rails5.0のデフォルト)
  • required: falsenilを許容する (Rails4.xのデフォルト)
  • 親テーブルのレコードがない状態で子テーブルのcreateは失敗する!
  • 親テーブルのレコードがない状態で子テーブルのcreateを成功させるためにはoptional: trueをつける必要がある(Rails4以前と同じ挙動)

DemoA:親テーブル
DemoB:子テーブル

親テーブルのレコードがない状態で子テーブルのcreateは失敗する!

class DemoA < ActiveRecord::Base

end
class DemoB < ActiveRecord::Base
  belongs_to :demo_a #optional 未指定
end
DemoA.inspect #=> “DemoA(id: integer, name: string)“
DemoB.inspect #=> “DemoB(id: integer, demo_a_id: integer)“
DemoB.create.inspect
 (0.2ms) BEGIN
 (0.2ms) ROLLBACK
#=> "#<DemoB id: nil, demo_a_id: 0>"

親テーブルのレコードがない状態で子テーブルのcreateを成功させるためにはoptional: trueをつける必要がある

class DemoA < ActiveRecord::Base

end
class DemoB < ActiveRecord::Base
  belongs_to :demo_a, optional: true
end
DemoA.inspect #=> “DemoA(id: integer, name: string)“
DemoB.inspect #=> “DemoB(id: integer, demo_a_id: integer)“
DemoB.create.inspect
 (0.2ms) BEGIN
 SQL (0.5ms) INSERT INTO `demo_bs` VALUES ()
 (0.2ms) ROLLBACK
#=> "#<DemoB id: 1, demo_a_id: 0>"

所感

Rails5.0へのバージョンアップに伴う変更点を整理中。デフォルト挙動が変わるようなものもあるので注意が必要だ。バージョンアップ情報のキャッチアップも結構大変だな。