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