Rails 3,ActiveRecord,检测has_many关联中的更改

时间:2011-07-13 04:08:12

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有以下协会

class User < ActiveRecord::base 
  has_many :memberships
end

我想要做的是在users_controller更新操作中检测到​​已在user.memberships添加或删除了某些成员资格。

关于如何实现这一点的任何想法或建议?

感谢您的帮助。

编辑:如果问题不明确,我道歉。

用户通过父子关系链接在一起。这种关系是通过家庭圈子的成员资格实现的。

我想要的是,当儿童用户自动加入课堂圈时,孩子的父母也会加入同一个课堂圈。换句话说,向子用户添加/删除成员资格需要传播给他的父母用户。

3 个答案:

答案 0 :(得分:1)

如果上下文不是很明确,我道歉。 首先澄清一下背景:

用户通过父子关系链接在一起。这种关系是通过家庭圈子的成员资格实现的。

我想要的是,当儿童用户自动加入课堂圈时,孩子的父母也会加入同一个课堂圈。换句话说,向子用户添加/删除成员资格需要传播给他的父母用户。

现在的解决方案:
我解决这个问题的方法是将after_save和before_destroy方法添加到Membership模型中,以检查用户是否为子级,并在这种情况下创建/销毁父级的成员资格。我必须解决几个棘手的边缘情况,但代码似乎工作正常。

最后一点:我的第一个想法是以某种方式在用户控制器中检测到已添加或删除了成员资格,然后检查用户是否是儿童用户....

答案 1 :(得分:1)

我知道我在这里参加派对很晚,但未来的旅行者ActiveRecord会曝光before_addafter_addbefore_removeafter_remove正是这些场景的钩子。

答案 2 :(得分:0)

添加了怎么样?自上次访问以来?

如果是,则创建一个“读取”布尔列,在您访问时更新。

否则,详细说明。 :)