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を継承する全てのクラスが強制的に機能を継承してしまい、無駄な影響を与えてしまう危険性があったが、それを今までよりは回避しやすくなったのがメリットで、目的だと思われる。