【发布时间】:2009-04-28 03:05:16
【问题描述】:
使用 ActiveRecord,我有一个对象 Client,它有零个或多个用户(即通过 has_many 关联)。客户端还具有可以手动设置的“primary_contact”属性,但始终必须指向关联用户之一。 IE。如果没有关联用户,primary_contact 只能为空。
实现 Client 的最佳方式是:
a) 第一次将用户添加到客户端时,primary_contact 是否设置为指向该用户?
b) primary_contact 始终保证在用户关联中,除非所有用户都被删除? (这有两个部分:设置新的 primary_contact 或从关联中删除用户时)
换句话说,我如何将“主要联系人”的标题指定并重新分配给给定客户的用户之一?我已经修改了许多过滤器和验证,但我就是无法做到正确。任何帮助将不胜感激。
更新:虽然我确信有无数的解决方案,但我最终让用户在删除它时通知客户端,然后在客户端中使用 before_save 调用来验证(并在必要时设置)它的 primary_contact。此调用由用户在被删除之前触发。在更新关联时,这并不能捕捉到所有的边缘情况,但它足以满足我的需要。
【问题讨论】:
标签: ruby-on-rails ruby validation activerecord