这是模型外观的示例:https://gist.github.com/1701475
CallFlow
- RouteByXxxx
---- XxxxOption
实际上有6个与CallFlow(RouteByXxxx)的关联,它们都有子(ren)XxxxOption,这是一个选项列表。
schema.rb:https://gist.github.com/1701475
我最大的问题是:当我只有一个与CallFlow相关联的DNIS时,我将如何更新其中一个IvrOption记录中的target_did?
实际上,协会看起来像这样:
CallFlow(routable_type = RouteByMessage)
-RouteByMessage
--MessageOption(target_routable_type = RouteByIvr)
--- RouteByIvr
---- IvrOption(target_routable_type = null,target_did = 1112223333)
答案 0 :(得分:1)
这样的事情应该有效;只需按照协会链。这里没有检查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