与attr_accessor和attr_accessible的区别

时间:2014-03-14 03:57:53

标签: ruby-on-rails

attr_accessor :password, :password_confirmation and
attr_accessible :password, :password_confirmation 

谁能告诉我这是什么意思

2 个答案:

答案 0 :(得分:0)

attr_accessor是ruby方法。它设置了getter和setter。但是,attr_accessible是一种rails方法,允许在质量赋值中传递值。

例如 -

attr_accessor :password, :password_confirmation
u = User.new({ :password => 'XXX', :password_confirmation => 'XXX' })
---
u.password => nil
u.password_confirmation => nil

但是,在这种情况下,您将能够使用getter和setter值。

attr_accessor :password, :password_confirmation
u.password = 'XXX'
---
u.password => 'XXX'

另一方面,对于attr_accessible -

attr_accessible :password, :password_confirmation
User.new({ :password => 'XXX', :password_confirmation => 'XXX' })
---
u.password => 'XXX'
u.password_confirmation => 'XXX'

答案 1 :(得分:0)

attr-accessor为指定的属性创建gettersetter方法

method.attribute(getter)

method.attribute =(setter)

attr_accessible来自ActiveRecord::Base和"指定可通过批量分配设置的模型属性的白名单。"