attr_accessor在 Rails 中,和 和有什么区别attr_accessible?据我了解, usingattr_accessor用于为该变量创建 getter 和 setter 方法,以便我们可以访问变量,如Object.variableor Object.variable = some_value。
attr_accessor
attr_accessible
Object.variable
Object.variable = some_value
我读到这attr_accessible使得外部世界可以访问该特定变量。有人可以告诉我有什么区别吗
attr_accessor是一个 Ruby 方法,它可以创建一个 getter 和一个 setter。attr_accessible是一种 Rails 方法,允许您将值传递给批量赋值:new(attrs)或update_attributes(attrs).
new(attrs)
update_attributes(attrs)
这是一个集体作业:
Order.new({ :type => 'Corn', :quantity => 6 })
您可以想象订单也可能有折扣代码,例如:price_off。如果您在阻止恶意代码这样:price_off做时不进行标记:attr_accessible
:price_off
Order.new({ :type => 'Corn', :quantity => 6, :price_off => 30 })
即使您的表单没有 的字段:price_off,如果它在您的模型中,默认情况下它也是可用的。这意味着精心制作的 POST 仍然可以设置它。使用attr_accessible白名单可以批量分配的那些东西。