2016-03-25 3 views
1

は、私は私のRailsの5 ApplicationRecordを持っています。さて、各モデル名をカスタマイズしてデータベーステーブルにマッピングしたいと思います。例えば、私が行うことができます。Rails 5:モデルとSQLテーブル名の間の名前マッピングをオーバーライドする最も良い方法は?</p> <pre><code>class ApplicationRecord < ActiveRecord::Base self.abstract_class = true end </code></pre> <p>と<code>ApplicationRecord</code>から継承したモデルの束:

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 

:(?任意のアイデアなぜ)

また、私はこのような何かをした方法を追加してみました。これを行う最善の方法の考えですか?

+0

これはうまくいきましたか、またはリロードする必要があると思います!サーバーまたはコンソールを有効にするには真 'クラスApplicationRecord oreoluwa

答えて

2

私は、それぞれのモデルにtable_name機能を実装したConcernを追加することでこれを解決しました。

関連する問題

 関連する問題