ruby-on-rails - Rails STI 覆盖所有子类的父类中的模型名称

标签 ruby-on-rails model routing sti

我在 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/

相关文章:

ruby-on-rails - 将大文件上传到 s3 时 Heroku 超时

javascript - 如何为我的网站创建需要用户身份验证的书签

c# - 仅更新模型的一部分,验证问题?

eclipse - 为 libgdx 构建新 Gradle 项目模型时出错

ruby-on-rails - Rails 4处理语言环境错误页面

ruby-on-rails - 辅助方法或模型或 Controller ?

iphone - 如何在 iPhone 应用程序中管理模型和 View ?

php - Zend 路由反向匹配返回当前 URL

ruby-on-rails - Rails model_path 路由错误,没有路由匹配 "model.2";应该是 "model/2"

带有 Wiredesignz HMVC 路由的 CodeIgniter