ActiveRecordのModelクラスとエンティティ名の関係を自由に設定したい
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」にとらわれることなく自由に設定できるようになります。