使用accept_nested_attributes_for,Mongomapper父模型验证失败

时间:2013-07-04 14:45:29

标签: ruby-on-rails ruby mongomapper

在Rails3中,我定义了2个模型,只有Item和Upload。 项目有许多具有多态关联的上传。

定义如下:

class Item
  include MongoMapper::Document
  include MongoMapper::AcceptsNestedAttributes

  attr_accessible :uploads_attributes

  belongs_to :category
  many :uploads,:as => :picture_of

  accepts_nested_attributes_for :uploads


  key :name, String
  key :description, String

  validates_presence_of :name

  timestamps!
end


class Upload
  require 'carrierwave/orm/mongomapper'
  include MongoMapper::EmbeddedDocument
  attr_accessible :image,:remote_image_url

  # belongs to Item, Event
  # upload , just for photo
  belongs_to :picture_of, :polymorphic => true

  key :versions, Array
  mount_uploader :image, ImageUploader


  timestamps!

  # for nested_attributes
  def _destroy
  end
end

尝试使用“上传”属性创建“项目”时,由于“验证失败”而失败。 我的定义有问题吗?

1 个答案:

答案 0 :(得分:0)

您是如何尝试创建该项目的?告诉我们命令。

item = Item.create(...)
puts item.errors.messages

但是MongoMaper [1]不支持 NestedAttributes。你必须使用第三方插件,对吧?

如果您只使用NestedAttributes来显示漂亮的表单,那么您必须知道它与关系一起工作正常。

<%= form_for(@item) do |f| %>
...
<%= render 'upload_form', uploads: @item.uploads, form_parent: f %>
...

<% end %>

[1] https://groups.google.com/forum/#!topic/mongomapper/6Sw19uIwJoc(2010)