J'ai quelques modèles (voir ci-dessous ArES) que je suis en train d'utiliser des associations avec (ce qui semble être entièrement en situation irrégulière et peut-être pas possible, mais je pensais que je donnerais un essai)Rails ActiveResource Les associations
Donc, de mon côté service, mon objet ActiveRecord va rendre quelque chose comme
render :xml => @group.to_xml(:include => :customers)
(voir ci-dessous xml généré)
Le groupe modèles et les clients sont HABTM
Sur mon côté ARes, j'espère qu'il peut voir l'attribut <customers>
xml et remplir automatiquement l'attribut .customers
de cet objet Groupe, mais les méthodes has_many etc ne sont pas supportées (du moins autant que je sache)
Donc, je me demande comment ARes fait sa réflexion sur le XML pour définir les attributs d'un objet. En AR par exemple, je pourrais créer un def customers=(customer_array)
et le définir moi-même, mais cela ne semble pas fonctionner dans ARes.
Une suggestion que je trouve pour une « association » est la méthode ont juste un
def customers
Customer.find(:all, :conditions => {:group_id => self.id})
end
Mais cela présente l'inconvénient qu'il fait un deuxième appel de service pour rechercher les clients ... pas cool
Je voudrais que mon modèle ActiveResource voit que les clients attribuent dans le XML et remplissent automatiquement mon modèle. Quelqu'un a-t-il une expérience avec ceci??
# My Services
class Customer < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :customer
end
# My ActiveResource accessors
class Customer < ActiveResource::Base; end
class Group < ActiveResource::Base; end
# XML from /groups/:id?customers=true
<group>
<domain>some.domain.com</domain>
<id type="integer">266</id>
<name>Some Name</name>
<customers type="array">
<customer>
<active type="boolean">true</active>
<id type="integer">1</id>
<name>Some Name</name>
</customer>
<customer>
<active type="boolean" nil="true"></active>
<id type="integer">306</id>
<name>Some Other Name</name>
</customer>
</customers>
</group>