Обновление полиморфной ассоциации в рельсах - PullRequest
0 голосов
/ 30 января 2012

Я взял на себя проект несколько месяцев назад, который включал в себя полиморфные ассоциации, которые были бесконечно глубокими ... и я хотел бы получить некоторую помощь в понимании того, как работать с моделями.

Это пример того, какмодели выглядят так: https://gist.github.com/1701475

CallFlow
- RouteByXxxx
---- XxxxOption

На самом деле существует 6 ассоциаций с CallFlow (RouteByXxxx), у всех из которых есть дочерний элемент(ren) XxxxOption, который представляет собой список опций.

schema.rb: https://gist.github.com/1701475

Мой самый большой вопрос: как мне будет обновлять target_did в одной из записей IvrOption, когда ятолько DNIS связан с CallFlow?

Реально ассоциация выглядит следующим образом:

CallFlow (routable_type = RouteByMessage)
-RouteByMessage
--MessageOption (target_routable_type = RouteByIvr)
--- RouteByIvr
---- IvrOption (target_routable_type = null, target_did = 1112223333)

1 Ответ

1 голос
/ 30 января 2012

Нечто подобное должно работать;просто следуйте цепочке ассоциаций.Здесь нет проверки на nils или что-то еще, так что вы хотели бы добавить это, но идея должна сохраняться.

call_flow = CallFlow.find_by_dnis(params[:dnis])
target_routable = call_flow.routable.options.first(:conditions => ["target_routable_type = ?", 'route_by_ivr']
ivr_option = target_routable.options.find(:conditions => (whatever))
ivr_option.update_attributes :target_did => 112233
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...