小编MR-*_*RON的帖子

检测rails中的变化has_many:通过关系

我有一个模型有许多has_many和has_many:通过模型关系.例如,在我的User类中,我有:

has_many:语言,通过:: profile_languages

我想要的是能够使用'User.changes'函数检测何时添加或删除它们,该函数返回使用User.language_ids =函数调用时已更改的属性数组.

有没有其他人试图这样做,或有这方面的经验?

有关ActiveModel更改功能的信息:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html

编辑:根据要求,这是我正在做的.

分配用户的属性后,在保存之前,我会查看.changes返回的所有值,以便记录外部日志中所做的所有更改.

所以如果我叫u.name ="新名字"

然后u.changes返回{name:['old name','new name']}

但是,当我向用户传递一堆语言ID时,例如

u.language_ids = [4,5]

然后创建了许多ProfileLanguage模型,并且u.changes哈希留空.

我试图在ProfileLanguage模型中创建一些回调,手动创建某种哈希,但我想知道这是否确实是最好的解决方案.

ruby-on-rails has-many-through ruby-on-rails-3

10
推荐指数
1
解决办法
3334
查看次数