Ich hatte das gestern gut funktioniert, einige Änderungen vorgenommen und ich habe keine Ahnung, wie ich es gebrochen habe. Ich bin mir sicher, dass es irgendwo ein Tippfehler ist, aber ich kann es nicht sehen.Verschachtelte Attribute, die nicht für references_one in Mongoid gespeichert werden
Alle am verschachtelten Modell im Formular vorgenommenen Änderungen werden überhaupt nicht gespeichert, das Entwicklungsprotokoll zeigt die durchlaufenden Attribute - und sie scheinen im richtigen Format zu sein, aber es wird überhaupt nicht aktualisiert.
Ich habe ein Modell, das User
Biography
wie so references_one:
# 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
Und schließlich meine Form (i hier einfache Form bin mit, aber zum größten Teil formtastic verhält es sich sehr ähnlich):
<%= 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 %>
und einige Ausgabe von meiner Entwicklung log, incase die Antworten dort liegen, und ich kippe sie gerade sehen:
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
Alle Änderungen am User
Modell sind in Ordnung, aber Änderungen am Biography
sind nicht gespeichert. Hilf mir, wach zu bleiben, du bist meine einzige Hoffnung!
Sieht aus wie Ausgabe # 357 in Mongoid 2.0 RC 1 gelöst werden könnte, die irgendwann im kommenden Januar erwartet wird. – wwilkins
Danke für das Follow-up. Ich habe dieses Problem ein wenig untersucht und denke, dass Sie wahrscheinlich Recht haben. Wir werden diese Antwort sicher akzeptieren, wenn der Patch die Dinge regelt. Der Kerl bleibt. – theTRON
Nur auf RC1 aktualisiert und sieht aus wie Problem # 357 ist immer noch nicht behoben und es bringt eine Reihe von neuen Problemen mit referenzierten Modellen. Schluss damit, dass ich zur Beta-20 zurückkehren muss. – theTRON