ActiveRecord Subclassing?

时间:2011-05-14 23:49:41

标签: ruby-on-rails ruby activerecord

不确定使用activerecord构建此代码的最佳方法是什么。我已经研究过STI和多态性,但这两种情况似乎都不太理想。

我有三个不同的模型,它们共享相似的功能和一些共享属性。目前,我在单独的多态模型中具有共享属性,三者中的每一个都具有has_one关联。这不太理想,因为这些属性存储在子对象中。我希望这些属性直接成为模型的一部分。

有关如何最好地完成此任务的任何建议?

1 个答案:

答案 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)