gpt4 book ai didi

ruby-on-rails - 当用户是管理员时保存对象时的不同行为

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:04 25 4
gpt4 key购买 nike

我使用 Rails (3.2.8) 创建了一个在线调查工具。答案和响应保存在不同的对象中(实际上有超过 15 种不同的模型)我使用 devise 作为用户管理系统。

所有采访结束后,管理员可以在验证每个用户采访的内容时修改用户响应。我希望每当管理员验证或修改响应时,将名为“admin_modified”的属性设置为 true。

我知道在 MVC 中我不应该在模型中访问用户属性,但是只有当登录的用户是管理员时我才能将此属性设置为 true 而不修改每个有保存/创建/更新属性的地方15 种不同型号的命令?

有没有一种简单而正确的方法来做到这一点?

谢谢!

最佳答案

为什么不存储哪个管理员修改/验证了对象而不是简单地显示它是否被修改的 bool 值?

下面是我将如何实现它:

在 User 中,创建一个方法 modify_form_object 甚至 modify_form_object_as_admin 获取对象和新属性。你会这样调用它:

@user.modify_form_object(form_object, new_attributes)

它会设置对象的 admin_id,并用属性更新对象。


或者,您可以覆盖 ActiveRecord 的保存方法,检查 current_user 是否为管理员,如果该字段存在,则分配该字段。

关于ruby-on-rails - 当用户是管理员时保存对象时的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com