У меня есть некоторые модели ARes (см. Ниже), с которыми я пытаюсь использовать ассоциации (которые кажутся полностью недокументированными и, возможно, не возможными, но я решил попробовать)
Так что на моей стороне обслуживания мой объект ActiveRecord будет отображать что-то вроде
render :xml => @group.to_xml(:include => :customers)
(см. Сгенерированный XML ниже)
Модели и клиенты - HABTM
Со своей стороны AR, я надеюсь, что он может видеть атрибут <customers>
xml и автоматически заполнять атрибут .customers
этого объекта Group, но методы has_many и т. Д. Не поддерживаются (по крайней мере, до тех пор, пока Могу сказать)
Так что мне интересно, как ARes отражает XML, чтобы установить атрибуты объекта. Например, в AR я мог бы создать def customers=(customer_array)
и установить его сам, но в ARes это не работает.
Одним из предложений, которое я нашел для "ассоциации", является метод "просто есть"
def customers
Customer.find(:all, :conditions => {:group_id => self.id})
end
Но это имеет тот недостаток, что делает второй сервисный звонок для поиска этих клиентов ... не круто
Мне бы хотелось, чтобы моя модель ActiveResource видела, что клиенты атрибутов в XML, и автоматически заполняет мою модель. Кто-нибудь имеет опыт работы с этим ??
# 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>