如何在rails_admin上访问更改的变量?

时间:2014-07-15 09:15:09

标签: ruby-on-rails ruby rails-admin

如何在更新前后访问更改的值?

假设我有Person1。

Person1.friends = [P2, P3, P4]

然后我更新它,所以它变成:

Person1.friends = [P2, P3]

如何访问之前的Person1.friends,以便我知道P4只删除了Person1.friends

我尝试比较Person1.friendsbefore_update上的after_update,但它们都会产生相同的结果。

2 个答案:

答案 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'>