ActiveRecordのModelクラスとエンティティ名の関係を自由に設定したい


INDEX PAGE


ActiveRecordのModelクラスとエンティティ名の関係を自由に設定したい




RailsではジェネレーターによってModelクラスを自動生成でき
テーブル名の複数形のModelクラスがデータベースのエンティティと対応するという
暗黙のルールが存在します。

しかし、どうしてもテーブル名とModelクラスの名前を分離したい場合もあります。
例えば
・複数形のModelクラスが気に食わない場合
・複数の画面で異なるリレーションでModelクラスを利用しなければいけない場合
・エンティティ名とModelクラス名をリンクさせたくない場合

一応こういう時に、エンティティ名とModelクラスの癒着を解消する方法がありました。



■単純に複数形を解除したいとき

「/config/environment.rb」の中で

ActiveRecord::Base.pluralize_table_names = false

と記述することで、アプリケーション全体的に複数形にしなくなります。
ただしこれをやると、全てのアプリケーションに適用されてしまうのでご注意を。



■エンティティ名を独自に定義したいとき

Modelクラス内に次のように定義することで、
自由にModelクラスとエンティティの関係を構築できます。

class Hoge < ActiveRecord::Base
set_table_name "hoge_mst"
end

さらに「set_primary_key」という設定を行えば
PKも「id」にとらわれることなく自由に設定できるようになります。



INDEX PAGE