在一个名称空间下组织单独的子模型

时间:2015-01-02 17:42:09

标签: ruby-on-rails ruby ruby-on-rails-4 widget models

我正在构建一个应用程序,允许用户使用可配置的小部件(基本上只是网站的子对象)创建自定义网站。目前,每个小部件都是自己独立的模型,因此我必须通过用户的网站对象(例如@site.headers@site.galleries)单独访问它们。

我想要做的是设置一种方法来在一个命名空间Widget下引用这些单独的子对象,这样我就可以使用@site.widgets返回属于我的所有个别子对象的哈希值一个网站。

我在下面看过类似的内容,但我认为:class_name不接受数组。

has_many :widgets, :foreign_key => 'site_id', :class_name => ['Header', 'Gallery']

1 个答案:

答案 0 :(得分:2)

将其定义为关联是不可能的。相反,您可以定义自己的方法:

def widgets
  headers + galleries
end

但请记住,此方法的结果将是简单的Array,而不是ActiveRecord::Relation - 因此您将无法在此处调用AR范围方法。