使用Mongoid的嵌套表单出错

我在Rails 3上使用Mongoid并尝试构建嵌套表单。 我遇到的问题是当我使用accept_nested_attributes_for方法时,我收到此错误消息:

undefined method `persisted?' for []:Array 

是否有其他人在Mongoid中遇到嵌套表单的问题? 我该怎么做才能解决它?

编辑:有关错误的更多信息。 这是完整的痕迹。

 mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `send' mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `method_missing' mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `send' mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `method_missing' actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1280:in `fields_for_nested_model' actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1273:in `fields_for_with_nested_attributes' actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1155:in `fields_for' simple_form (1.2.2) lib/simple_form/action_view_extensions/builder.rb:96:in `simple_fields_for' app/views/users/profile.html.haml:16:in `_app_views_users_profile_html_haml__599717908_2187897020_0' 

Rails 3遵循ActiveModel,它遵循ActionPack(和ActionView)所期望的特定契约。

请参阅这篇文章 ,其中Yehuda Katz在ActiveModel部分详细解释了这一点。 另请参阅ActiveModel ChangeLog ,它引用了该方法。

简而言之,您的模型必须实现某些方法才能与其他rails 3应用程序一起玩。 而这种方法就是其中之一。

ActiveRecord 3只是遵循这个合同。 如果你扔掉它并使用你自己的ORM像Mongoid,除非框架这样做(如mongoid情况),你必须明确地做。 couch_potato是一个类似的couchdb包装器完全相同。

这个问题是由我在Github上通过wink 发现的最近拉取请求修复的。