J'ai eu ce travail bien hier, fait quelques changements et je ne sais pas comment je l'ai cassé. Je suis sûr que c'est une faute de frappe quelque part, mais je ne peux pas le voir. Les modifications apportées au modèle imbriqué dans le formulaire ne sont tout simplement pas sauvegardées, le journal de développement montre les attributs en cours - et ils semblent être dans le bon format, mais ils ne sont pas du tout mis à jour.Attributs imbriqués ne pas enregistrer pour references_one dans Mongoid
J'ai un modèle User
qui references_one Biography
comme ceci:
# app/models/user.rb
class User
include Mongoid::Document
include Mongoid::Timestamps
field :first_name, :type => String
field :last_name, :type => String
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
references_one :biography
accepts_nested_attributes_for :biography
#--snip---
end
# app/models/biography.rb
class Biography
include Mongoid::Document
include Mongoid::Timestamps
field :content, :type => String
field :role, :type => String
field :is_crew, :type => Boolean
referenced_in :user
end
Et enfin ma forme (j'utilise forme simple, mais pour la plupart il se comporte très semblable à formtastic):
<%= simple_form_for [:manage, @user], :html => {:multipart => true}, :position => :left do |f| %>
<h2>Login details</h2>
<%= f.input :email, :input_html => {:class => "text"} %>
<%= f.input :first_name, :input_html => {:class => "text"} %>
<%= f.input :last_name, :input_html => {:class => "text"} %>
<div class="biography">
<h2>Biography</h2>
<%= f.simple_fields_for :biography do |biography_form| %>
<%= biography_form.input :role, :input_html => {:class => "text"} %>
<%= biography_form.input :content, :as => :text, :input_html => {:class => "textarea"} %>
<%= biography_form.input :is_crew, :as => :boolean %>
<%- end -%>
</div>
<%= f.submit "Save user", :class => "submit mid" %>
<% end %>
et une sortie de mon journal de développement, les réponses Incase gisent là, et je ne peux pas les voir:
Started POST "/manage/users/john-doe" for 127.0.0.1 at Wed Dec 15 11:42:09 +1100 2010
Processing by Manage::UsersController#update as HTML
Parameters: {"commit"=>"Save user", "authenticity_token"=>"44QlHsbKb8Pm91wnxWJa8Y0QsUXDzp/3rVpfs3G1Inc=", "utf8"=>"✓", "id"=>"john-doe", "user"=>{"biography_attributes"=>{"is_crew"=>"0", "role"=>"Tenor", "id"=>"4d080de56a4f1dfe7700000e", "content"=>"John was born on the 1st of January, 1970."}, "last_name"=>"Doe", "first_name"=>"Johnathan", "email"=>"[email protected]"}}
the_idea_of_north_development['users'].find({:_id=>BSON::ObjectId('4d06e6036a4f1dcb1b000001')}, {}).limit(-1)
the_idea_of_north_development['users'].find({:slug=>"john-doe"}, {}).limit(-1)
the_idea_of_north_development['biographies'].find({"user_id"=>BSON::ObjectId('4d080de06a4f1dfe7700000d')}, {}).limit(-1)
the_idea_of_north_development['$cmd'].find({"count"=>"users", "query"=>{:_id=>{"$ne"=>BSON::ObjectId('4d080de06a4f1dfe7700000d')}, :email=>/^[email protected]\.com\.au$/i}, "fields"=>nil}, {}).limit(-1)
the_idea_of_north_development['users'].find({"slug"=>"johnathan-doe"}, {})
MONGODB the_idea_of_north_development['users'].update({"_id"=>BSON::ObjectId('4d080de06a4f1dfe7700000d')}, {"$set"=>{"slug"=>"johnathan-doe", "updated_at"=>Wed Dec 15 00:42:09 UTC 2010, "first_name"=>"Johnathan"}})
Redirected to http://lvh.me:3000/manage/users
Completed 302 Found in 17ms
Toute modification apportée à la mise à jour du modèle User
est correcte, mais les modifications apportées au Biography
ne sont pas enregistrées. Aide-moi ruche-esprit, tu es mon seul espoir!
Il semblerait que le problème # 357 pourrait être résolu dans mongoid 2.0 rc 1 qui devrait arriver en janvier prochain. – wwilkins
Merci pour le suivi. J'ai examiné la question un peu et je pense que vous avez probablement raison, vous serez sûr d'accepter cette réponse si le correctif arrange les choses. Le mec demeure. – theTRON
Juste mis à jour à RC1, et ressemble à la question # 357 n'est toujours pas corrigé et qu'il introduit un tas de nouveaux problèmes avec les modèles référencés. Fini par devoir revenir à la beta-20. – theTRON