ActiveRecord 子类化?
Posted
技术标签:
【中文标题】ActiveRecord 子类化?【英文标题】:ActiveRecord Subclassing? 【发布时间】:2011-05-14 23:49:41 【问题描述】:不确定使用 activerecord 构建它的最佳方法是什么。我研究过 STI 和多态性,但对于这种情况,两者似乎都不理想。
我有三个不同的模型,它们都有相似的功能和一些共同的属性。目前,我在一个单独的多态模型中拥有共享属性,这三个模型中的每一个都有一个 has_one 关联。这不太理想,因为这些属性存储在子对象中。我希望这些属性直接成为模型的一部分。
关于如何最好地完成此任务的任何建议?
【问题讨论】:
更多细节会更好——你的模型之间共享了多少功能?为什么您已经排除了 STI? 【参考方案1】:您可以将代码添加到模块中...
/lib/super_modules/special_power.rb
module SuperModules::SpecialPower
def fly
puts "I can fly"
end
end
/app/models/model_one.rb
class ModelOne < ActiveRecord::Base
include SuperModules::SpecialPowers
end
/app/models/model_two.rb
class ModelTwo < ActiveRecord::Base
include SuperModules::SpecialPowers
end
以下将起作用:
ModelOne.new.fly
ModelTwo.new.fly
你可能想要添加到 config/application.rb:
config.autoload_paths += %W(#config.root/lib)
【讨论】:
以上是关于ActiveRecord 子类化?的主要内容,如果未能解决你的问题,请参考以下文章
Your Trial period has expired. To continue using ActiveReports 10, contact GrapeCity at ActiveRe