usage of attr_accessor in Rails
在Rails型号中,您何时使用
永远不要,除非你有特殊的需要。自动数据库支持的访问器是为您创建的,所以您不必担心。
您创建的任何
现在在Ruby中,情况就不同了,最后你会经常使用这些。但如果你在铁路上需要它们,我会很惊讶的——尤其是最初。
attr_访问器可用于您不希望直接存储在数据库中的值,而这些值仅在对象的生命周期(例如密码)内存在。
ATTR读卡器可以作为完成类似工作的几种备选方案之一:
1 2 3 | def instance_value "my value" end |
Rails模型只是从
1 2 3 4 5 6 7 | def foo=(var) @foo = var end def foo @foo end |
号
1 2 3 | def foo @foo end |
1 2 3 | def foo=(var) @foo = var end |
。
在Rails中,ActiveRecord以一种方便的方式使用这些getter和setter来读写数据库中的值。但是,数据库只是持久层。您应该可以像使用任何其他Ruby类一样自由地使用
更多信息:
http://apidock.com/ruby/module/attr_访问器
http://www.rubyist.net/~slagell/ruby/accessors.html
Ruby中的attr_accessor是什么?
如果您使用它来验证对"服务"条款的接受,您应该真正考虑使用validates:terms"服务",:acceptance=>true。它将创建一个虚拟属性,并且更加简洁。
http://guides.rubyonrails.org/active_record_validations.html接受。
一个例子是在一个序列化列中存储了许多选项。如果您试图为这些选项中的一个设置文本字段,那么表单生成器会抱怨。您可以使用attr_访问器来伪造它,然后在更新操作中将其保存在序列化列中。