【发布时间】:2012-10-29 07:39:26
【问题描述】:
我有一个具有多个 has_many 和 has_many 的模型:通过模型关系。例如,在我的 User 类中,我有:
has_many :languages, through: :profile_languages
我希望能够使用“User.changes”函数检测何时添加或删除这些属性,该函数返回在使用 User.language_ids= 函数调用时已更改的属性数组。
有没有其他人尝试过这样做,或者有这方面的经验?
关于 ActiveModel 更改功能的信息:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
编辑:根据要求,这就是我正在做的事情。
在分配用户属性之后保存之前,我正在查看从 .changes 返回的所有值,以便在外部日志中记录所有更改。
所以如果我调用 u.name = "new name"
然后 u.changes 返回 {name: ['old name', 'new name']}
但是,当我向用户传递一堆语言 ID 时,例如
u.language_ids = [4,5]
然后创建了多个 ProfileLanguage 模型,u.changes 哈希留空。
我正在尝试在 ProfileLanguage 模型中创建一些回调,这些回调将手动创建某种哈希,但我想知道这是否确实是最好的解决方案。
【问题讨论】:
-
嗨,Ron,你能把你的问题说得更具体一点吗?也许向我们展示你到目前为止的设置,这样我们就有了一些事情要做。
-
你研究过回调或观察者吗?
-
添加了一个编辑。希望它可以澄清
标签: ruby-on-rails ruby-on-rails-3 has-many-through