私は Rails 5 を持っていますApplicationRecord
:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
から継承するモデルの束ApplicationRecord
。ここで、各モデル名をカスタマイズした方法でデータベース テーブルにマップしたいと考えています。たとえば、次のことができます。
class MyModel < ApplicationRecord
self.table_name = 'MY_MODELS' # overrides default 'my_models'
end
しかし、すべてのマッピングは予測可能であるため、基本クラスでそれを行うだけだと思いました。
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.table_name
self.name.underscore.pluralize.upcase
end
end
...しかし、技術的にはクラスメソッドはサブクラスに継承されるべきですが、それはうまくいきませんでした。(理由はわかりますか?)
私はまた、次のようなことをするメソッドを追加しようとしました:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
def self.inherited(subclass)
subclass.table_name = subclass.name.underscore.pluralize.upcase
end
end
これもうまくいきませんでした。これを行うための最良の方法のアイデアはありますか?