我正在构建一个应用程序,允许用户使用可配置的小部件(基本上只是网站的子对象)创建自定义网站。目前,每个小部件都是自己独立的模型,因此我必须通过用户的网站对象(例如@site.headers
和@site.galleries
)单独访问它们。
我想要做的是设置一种方法来在一个命名空间Widget下引用这些单独的子对象,这样我就可以使用@site.widgets
返回属于我的所有个别子对象的哈希值一个网站。
我在下面看过类似的内容,但我认为:class_name
不接受数组。
has_many :widgets, :foreign_key => 'site_id', :class_name => ['Header', 'Gallery']
答案 0 :(得分:2)
将其定义为关联是不可能的。相反,您可以定义自己的方法:
def widgets
headers + galleries
end
但请记住,此方法的结果将是简单的Array
,而不是ActiveRecord::Relation
- 因此您将无法在此处调用AR范围方法。