我是 Ruby 和 Rails 的新手(和编程!),并试图找出将属性从模型传递给它的 STI 子代的惯用方式。
我有一个通用模型“文档”,以及一些从它继承的模型——让我们以“教程”为例。我有一个“图标”的字符串字段,我想在其中存储图标的文件名而不是完整路径(我认为路径应该取决于每个模型,因为它是检索记录数据的细节?):
class Document < ActiveRecord::Base
attr_accessible :title, :body, :icon
@@asset_domain = "http://assets.example.com/"
@@asset_path = "documents/"
def icon
@@asset_domain.to_s + @@asset_path.to_s + read_attribute(:icon).to_s
end
end
这是我想对子类做的事情,所以他们在适当的地方寻找他们的“图标”(或任何其他资产)。
class Tutorial < Document
attr_accessible :title, :body, :icon
@@asset_path = "tutorials/"
# Other tutorial-only stuff
end
我已经阅读了类变量并理解为什么我上面写的内容没有像我预期的那样工作,但是在教程类中覆盖“asset_path”的最佳方法是什么?我认为我不应该使用实例变量,因为值不需要更改每个模型实例。任何想法都非常感谢(即使这意味着重新考虑它!)