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 子类化?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中的表关联 - ActiveRecord

仅列出 ActiveRecord 子类方法

Rails 查询具有关联条件的多个主键

小程序授权登陆获取信息

覆盖ActiveRecord子类中的'=='方法有意义吗?

Your Trial period has expired. To continue using ActiveReports 10, contact GrapeCity at ActiveRe