Meine Anwendung hat die folgenden Model-Klassen:
class Parent < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :child_attributes, :child
has_one :child
accepts_nested_attributes_for :child
#This is to generate a full JSON graph when serializing
def as_json(options = {})
super(options.merge, :include => {:child => {:include => :grandchild } })
end
end
class Child < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :grandchild_attributes, :grandchild
belongs_to :parent
has_one :grandchild
accepts_nested_attributes_for :grandchild
end
class Grandchild < ActiveRecord::Base
belongs_to :child
end
Dann habe ich in meinem Controller eine create
Methode definiert:
def create
= Parent.new(params[:parent])
#Rest ommited for brevity - just respond_with and save code
end
end
Meine Anfrage erscheint in den Logs als:
Parameters: {"parent"=>{"child"=>{"grandchild"=>{"gc_attr1"=>"value1", "gc_attr2"=>"value2"}}, "p_attr1"=>"value1"}
Dies ist der vollständige Serialisierungsgraph, der von meiner iPhone-App-Clientanwendung mit RestKit stammt. Ich habe in anderen SO-Fragen wie hier gesehen, dass auf diesen Blog-Beitrag verwiesen wird. Mein Problem ist jedoch, dass ich nicht weiß, wie ich den serialisierten Graphen von der Clientseite aus mit RestKit steuern kann, um eine Anfrage wie diese zu erstellen (und auf diese Weise funktioniert es.. getestet mit Debugger)
Parameters: {"parent"=>{"child_attributes"=>{"grandchild_attributes"=>{"gc_attr1"=>"value1", "gc_attr2"=>"value2"}}, "p_attr1"=>"value1"}
Hat jemand Ideen, ob es eine Option gibt, die ich an die Parent.new-Methode übergeben oder die RestKit-JSON-Ausgabe anpassen kann, um die model_attributes-Struktur innerhalb von verschachtelten JSON-Objekten zu erreichen?
Danke