在一个命名空间下组织单独的子模型
Organize separate child Models under one namespace
我正在构建一个应用程序,允许用户使用可配置的小部件(本质上只是网站的子对象)创建自定义网站。目前每个小部件都是自己独立的模型,因此我必须通过用户的站点对象(例如 @site.headers
和 @site.galleries
.
单独访问它们
我想做的是设置一种方法来引用一个命名空间 Widget 下的这些单独的子对象,这样我就可以只使用 @site.widgets
到 return 我所有的散列属于站点的单个子对象。
我已经研究了下面类似的内容,但我认为 :class_name
不接受数组。
has_many :widgets, :foreign_key => 'site_id', :class_name => ['Header', 'Gallery']
无法将此定义为关联。相反,您可以定义自己的方法:
def widgets
headers + galleries
end
但请记住,此方法的结果将很简单 Array
,而不是 ActiveRecord::Relation
- 因此您将无法对此调用 AR 范围方法。
我正在构建一个应用程序,允许用户使用可配置的小部件(本质上只是网站的子对象)创建自定义网站。目前每个小部件都是自己独立的模型,因此我必须通过用户的站点对象(例如 @site.headers
和 @site.galleries
.
我想做的是设置一种方法来引用一个命名空间 Widget 下的这些单独的子对象,这样我就可以只使用 @site.widgets
到 return 我所有的散列属于站点的单个子对象。
我已经研究了下面类似的内容,但我认为 :class_name
不接受数组。
has_many :widgets, :foreign_key => 'site_id', :class_name => ['Header', 'Gallery']
无法将此定义为关联。相反,您可以定义自己的方法:
def widgets
headers + galleries
end
但请记住,此方法的结果将很简单 Array
,而不是 ActiveRecord::Relation
- 因此您将无法对此调用 AR 范围方法。