如何在更新前后访问更改的值?
假设我有Person1。
Person1.friends = [P2, P3, P4]
然后我更新它,所以它变成:
Person1.friends = [P2, P3]
如何访问之前的Person1.friends
,以便我知道P4
只删除了Person1.friends
我尝试比较Person1.friends
和before_update
上的after_update
,但它们都会产生相同的结果。
答案 0 :(得分:0)
我假设Person1.friends是从更新控制器中的表单中获取的值,因此已更改了属性,但未保存到数据库中。你可以做的是以下几点。
在控制器中,在执行保存/更新命令之前执行以下操作
personold = Person.where( query for the person based on a value that haasn't changed).first
或者你在编辑动作中做了类似的事情
@personold = Person1
这些行上的或somethig
答案 1 :(得分:0)
Person.friends根据它的关系简单地返回一个集合:
where(person_id: person.id)
不要尝试从集合中恢复被删除的人,而是尝试设置CRUD逻辑,以便控制器中的destroy方法返回一个删除的方法,如下所示:
select_person = Person.friends.find(1)
select_person.destroy
=> #<User id: 1, email: 'test@test.com'>