我有一个模型有许多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模型中创建一些回调,手动创建某种哈希,但我想知道这是否确实是最好的解决方案.