与多个字段相关的Mongoid单个对象

时间:2011-02-23 15:10:25

标签: ruby-on-rails ruby mongoid

是否可以将单个对象关联为多个字段?像这样的东西?

广告模型

class Ad
  include Mongoid::Document
  field :name

  referenced_in :ad_types, :as => :web_spec
  referenced_in :ad_types, :as => :print_spec
end

AdType模型

class AdType
  include Mongoid::Document
  field :shape
  field :size
  field :medium

  references_many :ads
end

然后以这样的形式将每个引用引用为单独的字段。

<%= f.input :web_spec, :collection => AdType.where(:medium => "Web"), :label_method => :shape, :label => "Web" %>
<%= f.input :print_spec, :collection => AdType.where(:medium => "Print"), :label_method => :shape, :label => "Print" %>

我没有运气就给了这样的东西。我可能会采用错误的方式,或者这个功能尚不存在。任何建议都会很明确。

1 个答案:

答案 0 :(得分:0)

几个问题。 AdType本身就是一个文件的原因吗?除非您将拥有大量类型,否则它可能更适合作为嵌入式文档。其次,可能更清晰的是拥有单一关联(无论是引用还是嵌入)和广告模型的两个范围。使用你的例子,我会有这样的事情:

class Ad
  include Mongoid::Document
  field :name
  embeds_one :ad_type

  scope :web ...
  scope :print ...
end

class AdType
  include Mongoid::Document
  field :shape
  field :size
  field :medium

  embedded_in :ad, :inverse_of => :ad_type
end