Rails5へのバージョンアップ ApplicationRecordへの変更

Rails4からRails5にバージョンアップする時の変更点として、ApplicationRecordを継承するようになるのが大きな変更点の一つとしてある。

 

それぞれRails4、5のモデルを見てみると、

 

これがRails4

class Article < ActiveRecord::Base

end

 

これがRails5

class Article < ApplicationRecord

 end

 

4ではActiveRecord::Baseを継承していたのが、

5からApplicationRecordを継承するようになった。

 

で、ApplicationRecordはどうやってできているかと言うと、

# app/models/application_record.rb class ApplicationRecord < ActiveRecord::Base

self.abstract_class = true

end

 

ActiveRecord::Baseを継承している。

つまり、各モデルとActiveRecord::Baseの間に一つクラスが挟まるようになった。

 

最初は余計なものが増えて面倒臭いだけでは?と思ったが、

モデルに何か機能を追加したいときに、今まではActiveRecord::Baseに追加するので、ActiveRecord::Baseを継承する全てのクラスが強制的に機能を継承してしまい、無駄な影響を与えてしまう危険性があったが、それを今までよりは回避しやすくなったのがメリットで、目的だと思われる。