gpt4 book ai didi

ruby-on-rails - 在 Rails 中分配 protected 属性

转载 作者:行者123 更新时间:2023-12-04 18:19:27 24 4
gpt4 key购买 nike

我的用户模型上有一个 protected 字段,因为它决定了许可级别。所以它应该受到保护而不是大量分配。因此,即使属性在 3.2 中默认受到保护,这实际上也是我想要的行为。

但是,在一种 Controller 方法上,我希望允许经理分配此字段,例如在用户创建或用户更新时。

如何允许为特定 Controller 操作分配该属性?

例如,我有我的 Controller :

# app/controllers/admin/users_controller.rb

def create
@user = User.new(params[:user])
# ...
end

现在我要做的是排除 clearance来自 params[:user] ,但它似乎在到达该行之前就被过滤掉并引发异常(我尝试在该行之前放置 debugger 甚至将其注释掉,它仍然引发异常)。

如果在调用 User#new 时没有捕获 protected 属性,在哪里捕获? ?

最佳答案

The Rails way这样做是分配没有保护的属性或使用管理员角色:

@user = User.new
@user.assign_attributes(params[:user], :without_protection => true)
@user.save

但是,我发现这有点乏味,所以我写了一个名为 sudo_attributes 的 gem这给了(在我看来)一个更好的 API:
@user = User.sudo_new(params[:user])
@user.save

它模仿了 Rails 的所有实例化、创建和更新方法(new、build、create、create!、update_attributes 等)。

关于ruby-on-rails - 在 Rails 中分配 protected 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989513/

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