rails 获取多态类的所有关联类

Posted

技术标签:

【中文标题】rails 获取多态类的所有关联类【英文标题】:rails get all associated classes of a polymorphic clas-s- 【发布时间】:2013-01-16 01:14:32 【问题描述】:

我有一个像这样的多态关联(改编自guides.rubyonrails.com):

class Picture < ActiveRecord::Base
  belongs_to :imageable, :polymorphic => true
end

class Employee < ActiveRecord::Base
  has_many :pictures, :as => :imageable
end

class Product < ActiveRecord::Base
  has_many :pictures, :as => :imageable

  has_many :employees
end

有没有办法获得所有可能的 :imageable_types仅给定图片模型

例如,要在 Product 模型中获取 has_many :quotes 类,您可以:

Product.reflect_on_association(:employees).klass 

获得:# => 员工

现在我想做类似的事情:

Picture.reflect_on_association(:imageable).klass 

这显然会引发异常,但我想得到类似:# => [Employee, Product]

有没有办法做到这一点? (没有尝试所有模型来查看它们是否包含 has_many :pictures)

【问题讨论】:

【参考方案1】:

如果不查看所有模型,我找不到解决方法,所以我只是调整了这个解决方案:https://***.com/a/2315469/1440599

【讨论】:

以上是关于rails 获取多态类的所有关联类的主要内容,如果未能解决你的问题,请参考以下文章

Rails 最佳 API 设计,用于获取与某个用户关联的所有记录

从控制台获取 rails 关联

rails 4:多态设置基类类型而不是继承

具有最终类的多态性,可在 swift 中实现关联类型协议

Rails 设计多态 - 使用 Ajax 获取部分渲染

Rails 关联帮助 - 我是不是使用多态关联?