gpt4 book ai didi

ruby-on-rails - 如果我使用:without_protection=>true when creating a new model in rails 3. 1会发生什么?

转载 作者:行者123 更新时间:2023-12-03 16:12:57 26 4
gpt4 key购买 nike

我在应用程序中遇到问题,意识到在创建模型时可以通过设置:without_protection => true来解决此问题,例如:

Model.new(params[:model], :without_protection => true). 

rails 到底能保护模型免受什么侵害?谢谢!

最佳答案

它可以防止意外的批量分配。

您显示的代码的问题在于,用户可以更改表单并更改您不希望他们更改的属性,例如用户上的哈希密码或帖子上的已发布状态。

您可以在模型上使用attr_protectedattr_accessible来保护模型上的属性被覆盖。当属性受到保护时,params中的值将被忽略(通知将出现在您的日志中)。

class Model < ActiveRecord::Base
attr_accessible :one, :two
end

在Rails 3.1之前就是这样。之后没有办法对其进行配置。现在,使用Rails 3.1,您可以分配角色:
class Model < ActiveRecord::Base
attr_accessible :one, :two, :as => :admin
attr_accessible :one, :as => :regular_user
end

并在进行批量更新时指定它( newupdate_attributes):
Model.new(params[:model], :as => :regular_user)

使用 :without_protection,将使每个属性都可以自由分配,并且应非常谨慎地使用。传递用户数据时切勿使用。例如,您可以在 db/seeds.rb中使用它。

关于ruby-on-rails - 如果我使用:without_protection=>true when creating a new model in rails 3. 1会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175035/

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