Mongoid:是否可以将引用视为嵌入?

时间:2014-04-17 00:45:08

标签: mongoid

class Part
  include Mongoid::Document

  belongs_to :type
  # data
end

class Type
  include Mongoid::Document

  has_many :parts
  field :name
  # data
end

假设我有类似上面的设计。我需要以一种独立于任何Part的方式存在它,因为这是逻辑结构,因为类型可以改变,我希望能够集中进行。但是当我找到一个Part时,我想将它的关联类型嵌入到返回的文档中。我想这样做是因为几乎在任何情况下我都需要使用Part中的数据,我需要来自其相关Type的数据。当我在客户端获得JSON时,它只包含type_id但不包含类型数据。是否有任何自动包含Part in JSON中的数据的数据,同时保留了引用的好处?

1 个答案:

答案 0 :(得分:0)

在评论中,mu回答说可以覆盖模型的as_json方法。

我的实施如下:

class Part
  include Mongoid::Document

  belongs_to :type

  def as_json options = {}
    if (options.has_key? :include and not options[:include].has_key? :type) or
        not options.has_key? :include
      options[:include] = :type
    end
    super.as_json(options)
  end
end