- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Rails 和面向对象编程中迈出第一步。
我想了解一些非常基本的东西:为什么我们需要 attr_accessible
模型内?
我读过黑客可以使用批量分配来更改数据库条目,从而危及安全,这就是为什么敏感字段需要保护(在这种情况下使用 atribute_protected
)。
是 attr_accessible
与atribute_protected
相反?如果是这样,为什么我们需要说明哪些字段可访问,哪些不可访问?不是默认可以访问这些字段吗?什么是attr_accessor
用于?
我注意到如果我不让某些字段可访问,我的应用程序就不会运行。我可以将 attr_accessible 用于敏感字段,例如 :password_digest 和 :admin 吗?
如果有人能向我解释一下,那就太棒了。
万事如意,
rails 上的提米
最佳答案
您在这里混杂了几个概念,因此我将尝试理清它们。attr_accessor
用于设置可读可写属性。这相当于说 attr_reader
和 attr_writer
.由于您的问题不是直接关于 attr_accessor
,我不会再解决这个问题,只是说在 Accessors 上查看此链接.
根据 Rails 文档: attr_accessible
与 attr_protected 宏相反
您是正确的,这些方法用于防止批量分配漏洞。
attr_accessible
说明哪些属性 可以 通过批量赋值来设置。 attr_protected
说明哪些属性 不能 通过批量赋值来设置。 attr_accessible
:
config.active_record.whitelist_attributes = true
attr_accessible
经常。
attr_protected
?如果你反其道而行,说
false
在白名单属性上,您将如何声明哪些属性不应大量分配?如果你说
attr_protected
你说得对! :D
:admin
这样的字段如
attr_protected
因为您不希望攻击者进入并将他们的权限升级为管理员角色。
关于ruby-on-rails - attr_accessible, attr_accessor, 我想知道他们是做什么的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487865/
我正在我的程序中设置一些跟踪代码,想知道哪些方法是通过attr_accessor 定义的。使用 TracePoint,我可以检测何时调用 attr_accessor,但我不知道如何让它告诉我它收到的参
我正在使用 data_mapper/sinatra 并尝试使用 attr_accessor 创建一些属性。以下示例代码: require 'json' class Person include D
我有父类,还有一些子类 class Base end class ChildNameAge < Base ATTRIBUTES = [:name, :age] attr_accessor *A
我想限制子类中父类(super class)方法的访问 class Parent attr_accessor :first_name, :last_name def initialize(fi
我想知道如何即时创建 attr_accessor。是否可以做类似的事情: attr_accessor "@#{key}" 在初始化方法中? module Mymodule def initiali
我不明白为什么我们需要在类中声明 attr_reader 和 attr_writer,或 attr_accessor。我都读了 this和 this帖子,但这些帖子主要解释它们是如何工作的,而不是它们
我有一个 attr_accessor 设置如下的类: class Human ATTRIBUTES = [:name] attr_accessor *ATTRIBUTES end 它就
我正在尝试创建一个包含 Singleton 的类使用 attr_accessor 时的模块。但这似乎不起作用。 require 'singleton' class Foo attr_accesso
我知道 Ruby 支持调用方法的简写风格,即:1.+(2) 与 1+2 相同(我仍然认为如果它与我的情况有关),但我真的很困惑为什么 attr_accessor 方法既不重复(好吧,它们不应该重复,因
http://gist.github.com/172341 (stackoverflow 破坏了格式) 在以下情况下,Human 创建的方法名称对 Boy 不可用。我的理解是否正确,attr_acce
我想使用 attr_accessor 将数组作为实例变量。 但是 attr_accessor 不只是用于字符串吗? 如何在阵列上使用它? 更新: 例如。如果你想: object.array = "ca
我正在尝试在 initialize 中执行一个 instance_eval,然后执行一个 attr_accessor,并且我一直得到这个:``initialize':未定义的方法“attr_acces
我在我的类中动态创建了一个实例变量: class Mine attr_accessor :some_var def intialize @some_var = true end
attr_accessor 不适用于以下代码。错误显示“父级未定义方法‘事物’(NoMethodError)”: class Parent @@things = [] attr_accesso
我理解 x |= y 基本上意味着 x = x|y。运算符 | 为类 Set 定义为计算两个集合的并集。确实我们可以看到: require 'set' r = Set.new(%w(a b)); s
我不明白为什么要这样写: class Building < ActiveRecord::Base attr_accessor :has_child_custom, 'test' end 然后我
我有一个简单的类,并且正在转置一个二维数组,如下所示: class Group attr_accessor :group_array def initialize @group_arr
我有一个简单的类,并且正在转置一个二维数组,如下所示: class Group attr_accessor :group_array def initialize @group_arr
这可能与 this question 完全相反.考虑以下规范: describe Record do it "calculates the first term grade" do tes
我正在使用 Sinatra 和 RSpec。我在 lib/auth.rb 中有这个 class Person attr_accessor :password if ENV['RACK_ENV'
我是一名优秀的程序员,十分优秀!