在Rails中的访问器

什么attr_accessor在Rails模型中使用attr_reader / attr_writer / attr_accessor


attr_accessor可以用于你不想直接存储在数据库中的值,并且只会存在于对象的生命周期中(如密码)。

attr_reader可以用来做几种选择之一来做这样的事情:

def instance_value
  "my value"
end

从来没有,除非你有特殊需要。 自动数据库支持的访问器为您创建,所以您不必担心。

您创建的任何attr_accessor都会更改rails对象上的相关@attr ,但在对象被销毁时会丢失,除非您将其粘贴回数据库中。 有时你确实需要这种行为,但在Rails应用程序中这是不寻常的。

现在在红宝石里,这是一个不同的故事,你最终会频繁使用它们。 但是如果你需要他们的话,我会很惊讶 - 尤其是最初。


Rails模型只是继承自ActiveRecord::Base ruby类。 ActiveRecord使用attr_accessor来为引用ruby类表的列名定义getter和setter。 重要的是要注意,这只是为了持久; 模型仍然只是红宝石类。

attr_accessor :foo只是以下的快捷方式:

def foo=(var)
  @foo = var
end

def foo
  @foo
end

attr_reader :foo只是以下内容的快捷方式:

def foo
  @foo
end

attr_writer :foo是以下内容的快捷方式:

def foo=(var)
  @foo = var
end

attr_accessor是getter和setter的快捷方式,而attr_reader是getter的快捷方式, attr_writer是setter的快捷方式。

在rails中,ActiveRecord以一种方便的方式使用这些getter和setter来读写数据库的值。 但是,数据库只是持久层。 您应该可以像使用任何其他ruby类一样自由地使用attr_accessorattr_reader来正确组合业务逻辑。 由于您需要在您需要保存到数据库之外获取和设置对象的属性,因此请使用attr_

更多信息:

http://apidock.com/ruby/Module/attr_accessor

http://www.rubyist.net/~slagell/ruby/accessors.html

Ruby中的attr_accessor是什么?

链接地址: http://www.djcxy.com/p/25775.html

上一篇: accessor in Rails

下一篇: reader of the Module calss in Ruby?