gpt4 book ai didi

ruby-on-rails - 当遇到在早期版本的 Rails 中使用 attr_accessible 的情况时,Rails 4 中的禁止属性错误

转载 作者:行者123 更新时间:2023-12-03 07:15:44 25 4
gpt4 key购买 nike

随着最近升级到 Rails 4,使用类似于下面的代码更新属性不起作用,我收到 ActiveModel::ForbiddenAttributes 错误:

@user.update_attributes(params[:user], :as => :admin)

用户在模型中具有以下 attr_accessible 行:

attr_accessible :role_ids, :as =>admin
# or any attribute other than :role_ids contained within :user

如何在 Rails 4 中完成相同的任务?

最佳答案

Rails 4 现在具有 strong_parameters 中的功能默认内置 gem。

人们不再需要调用:as => :admin,也不需要在模型中添加attr_accessible :user_attribute, :as => admin。原因是,默认情况下,Rails 应用程序现在对模型上的每个属性都具有“安全性”。您必须允许您想要访问/修改的属性。

您现在需要做的就是在 update_attributes 期间调用 permit:

@user.update_attributes(params[:user], permit[:user_attribute])

或者,更准确地说:

@user.update_attributes(params[:user].permit(:role_ids))

但是,这一行允许任何用户修改允许的角色。您必须记住仅允许管理员或任何其他所需角色通过另一个过滤器访问此操作,如下所示:

authorize! :update, @user, :message => 'Not authorized as an administrator.'

。 。 。如果您使用 Devise 和 CanCan 进行身份验证和授权,这将起作用。

关于ruby-on-rails - 当遇到在早期版本的 Rails 中使用 attr_accessible 的情况时,Rails 4 中的禁止属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17450185/

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