Archive for 12月, 2016

2016年12月29日に投稿

[Rails] self.abstract_class = true の意味と挙動

ActiveRecord::Base を継承したクラスをモデルとして作成すると、Rails はそのクラス名に対応したデータベースのテーブルを自動的に探そうとします。対応するデータベースのテーブルを用意しない場合は、self.abstract_class = true を書く必要があります。ActiveRecord::Base を継承したクラスを作成し、さらにそのクラスを継承させたい場合に self.abstract_class = true が書かれるようです。

実際に Rails 5.0.1 にて検証しました。例えば、app/models 以下に ActiveRecord::Base を継承したクラス Animal を作ります。そしてクラス Animal を継承したクラス Dog を作ります。そしてデータベースには dogs というテーブルを作成します。

続きを読む