我在 Rails 应用程序中使用 STI,为了不必为所有子类定义路由,我将以下内容放在每个子类中:
def self.model_name
Mapping.model_name
end
在上面的例子中,
Mapping
是父模型名称。例子:class UserMapping < Mapping; end
必须把它放在每个子类中并不是很枯燥,所以我正在寻找一种方法来以某种方式在父类中设置它,以便从父类继承的每个类自动将模型名称设置为父模型名称。
也许有更好的方法来克服与设置
model_name
无关的 STI 引起的路由问题。 - 我愿意接受建议!提前致谢!
最佳答案
将此放入您的 Mapping
类(class):
class Mapping < ActiveRecord::Base
def self.inherited(subclass)
super
def subclass.model_name
superclass.model_name
end
end
end
之后,
Mapping
的所有子类还将继承父级的 model_name
.
关于ruby-on-rails - Rails STI 覆盖所有子类的父类中的模型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527156/