我正在使用多个表的多态关系。对象窗口有ChartWindow,PluginWindow或PortletWindow。我使用了class_eval(relate_to_details)技术来定义详细信息表,以便每个对象都可以拥有自己的具有不同属性的表。
PluginWindowDetail是PluginWindow的详细信息表。 PluginWindow有一个plugin_id(plugin_window_details.plugin_id)所以,我在PluginWindow中定义了一个has_one关联(has_one:plugin_window_detail,:dependent =>:delete),因为我希望删除Window并删除插件。
然而,我意识到这并没有让我得到我想要的东西。删除PluginWindowDetail不会删除PluginWindow ..因为我使用的是class_eval技术而不是常规的ActiveRecord关联,所以我不知道如何在没有自己编码的情况下做到这一点(也许我应该这样做)
无论如何..带代码的要点在这里https://gist.github.com/3206666。任何帮助,将不胜感激。
答案 0 :(得分:0)
我认为更简单的方法是使用before_destroy回调。它会更灵活。