Mongoid在Parent中创建新的嵌入式文档

时间:2012-09-28 08:49:07

标签: ruby-on-rails mongodb mongoid

我有两个模型,我正在使用事件和报告。报告和嵌入事件。我无法为特定事件创建新报告。

我认为我的报告控制器新动作需要看起来像这样:

@event = Event.find(params[:eventid])
@report = @event.report.build

在我的活动模型中,我有以下内容:

embeds_one :report
accepts_nested_attributes_for :report

当我尝试保存时,收到以下错误:

Mongoid::Errors::NoParent

这是我的报告模型

class Report
include Mongoid::Document
include Mongoid::Timestamps
field :test, type: String
embedded_in :event, :inverse_of => :report
embeds_many :report_details
accepts_nested_attributes_for :report_details,
  :allow_destroy => true, 
    :reject_if => proc { |attributes| 
      attributes['name'].blank? && attributes['_destroy'].blank? 
    }

这是我的活动模型

class Event
include Mongoid::Document
include Mongoid::Timestamps
embeds_one :report
accepts_nested_attributes_for :report,
:allow_destroy => true, 
  :reject_if => proc { |attributes| 
    attributes['name'].blank? && attributes['_destroy'].blank? 
  }

提前致谢。

1 个答案:

答案 0 :(得分:4)

确保在创建新报告时设置event_id

您可以在提示时使用@report = @event.report.build(params[:report])或通过确保params哈希中包含'event_id'来实现此目的。