Deprecation warning with STI model_name workaround
ruby-on-rails, ruby-on-rails-3, sti
Solution
The answer turned out to be simple. Just add a `super` to the overriding method.
def self.inherited(child)
child.instance_eval do
def model_name
BaesModelDefinition.model_name
end
end
super
end
Problem
In my Single Table Inheritance models, I am overriding the `inherited` method in the base model so that all descendent models are recognized by the base model's name. The following code is used to add an override to the model_name method for all inherited classes. ``` def self.inherited(child) child.instance_eval do def model_name BaesModelDefinition.model_name end end end ``` I've noticed that this is producing deprecation warnings in Rails 3.2.3: ``` DEPRECATION WARNING: It looks like something (probably a gem/plugin) is overriding the ActiveRecord::Base.inherited method. It is important that this hook executes so that your models are set up correctly. A workaround has been added to stop this causing an error in 3.2, but future versions will simply not work if the hook is overridden. ``` Is there another approach I can use to fix the model_name issue?