不确定使用activerecord构建此代码的最佳方法是什么。我已经研究过STI和多态性,但这两种情况似乎都不太理想。
我有三个不同的模型,它们共享相似的功能和一些共享属性。目前,我在单独的多态模型中具有共享属性,三者中的每一个都具有has_one关联。这不太理想,因为这些属性存储在子对象中。我希望这些属性直接成为模型的一部分。
有关如何最好地完成此任务的任何建议?
答案 0 :(得分:4)
您可以将代码添加到模块中......
/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)