`

attr_accessor vs attr_reader

    博客分类:
  • RUBY
 
阅读更多
attr_reader: 实例变量只读
attr_writer: 实例变量可写
attr_accessor: 变量可读可写

attr_reader :approver
 
  def approver
  return nil if @approver.nil?
   u = User.find_by(User.user_conditions(@approver))
  end

  def approver=(user)
    u = User.find_by(User.user_conditions(user))
    throw "approver does not exist"  if u.nil?
    @approver = u
  end

如果不考虑(红色)逻辑处理,那么。
以上代码等同于:
attr_accessor :approver
分享到:
评论

相关推荐

    程序员需要经常刷题吗-scoped_attr_accessor:将私有和受保护的attr_accessor方法添加到您的类-或所有ruby

    需要程序员经常刷题吗范围属性访问器 将范围访问器添加到 ruby​​。 您可以在私有或受保护范围内创建作者、读者和访问...protected_attr_reader :some_weird_counter end class Monkey < Primate # Monkey can def

    Ruby-FastAttributes将属性与类型添加到类中

    在Ruby中,通常我们使用`attr_accessor`、`attr_reader`或`attr_writer`来定义类的属性。例如: ```ruby class Example attr_accessor :name end example = Example.new example.name = "John Doe" puts example....

    attr_extras:使用attr_initialize之类的方法从Ruby中获取一些样板

    提供像attr_private和attr_value这样的底层方法,可以很好地补充Ruby的内置attr_accessor , attr_reader和attr_writer 。 像pattr_initialize (或attr_private_initialize )和method_object这样的更高级别的...

    sith:带有Ruby样板符号的Ruby宏预处理器

    例子: 宏定义文件: macro_mapper attr_reader ( label ) def ~ { label } @~ { label } endendmacro_mapper attr_writer ( label ) def ~ { label } = ( value ) @~ { label } = value endendmacro attr_accessor ...

    ruby-oo-fundamentals-attribute-accessors-lab-sea01-seng-ft-07132

    在Ruby中,属性访问器是通过`attr_accessor`、`attr_reader`和`attr_writer`这三个内置宏来创建的。`attr_accessor`用于同时创建读取(getter)和写入(setter)方法,`attr_reader`只创建getter,`attr_writer`则只...

    oop-basics-accessor-methods

    在 Ruby 中,我们可以使用 `attr_accessor`、`attr_reader` 和 `attr_writer` 这三个内置宏来轻松定义这些方法。它们极大地提高了代码的可读性和简洁性。 1. **attr_accessor**:这个宏同时创建了 getter 和 setter...

    ruby-oo-fundamentals-attribute-accessors-lab-wdc01-seng-ft-06012

    4. **只读属性(Read-only Attributes)**: 如果只想提供getter方法,可以使用`attr_reader`。这禁止了外部代码直接修改属性的值,确保数据的完整性。 5. **只写属性(Write-only Attributes)**: 同样,如果只需要...

    ruby-oo-self-person-lab

    获得辨别何时实现attr_accessor , attr_reader和attr_writer 。 能够识别何时定义自己的attr_reader (getter)和attr_writer (setter)方法。 介绍 为了练习面向对象的编程(OOP),您将创建一个Person类。 ...

    Ruby 面向对象知识总结

    - **`attr_accessor`**:同时提供访问器和设置器的方法。例如: ```ruby class Box attr_accessor :width, :height def initialize(width, height) @width = width @height = height end end ``` - **`...

    Ruby 代码规范

    - 使用 `attr_accessor`, `attr_reader`, `attr_writer` 来声明属性,而不是手动创建getter和setter。 - 避免在类的初始化方法之外定义实例变量,使用 `attr_accessor` 或 `initialize` 方法初始化。 6. **错误...

    oo-my-pets-v-000

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。 测试套件会清楚说明这一点,因此请注意测试输出。 第二部分:对象关系 主人...

    oo-my-pets-online-web-sp-000

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。测试套件将明确这一点,因此请注意测试输出。第二部分:对象关系主人应该能够...

    ruby-oo-object-relationships-my-pets

    请记住,某些属性应该是可读可写(即attr_accessor S),而另一些可能需要只是制定者( attr_writer )或只是吸气剂( attr_reader )。 测试套件将明确这一点,因此请注意测试输出。 第二部分:对象关系 主人应该...

    动态Orms-Readme-V-000

    动态ORM目标解释为什么动态ORM对... 我们可以通过使用类来创建数据库表来实现此映射: class Song attr_accessor :name , :album attr_reader :id def initialize ( id = nil , name , album ) @id = id @name = name

    dynamic-orms-readme-online-web-sp-000

    动态ORM 目标 解释为什么动态ORM对我们作为开发人员有用 建立基本的动态ORM ... attr_accessor :name , :album attr_reader :id def initialize ( id = nil , name , album ) @id = id @name = name @al

    Ruby元编程第二版中文

    `attr_accessor`、`attr_reader`和`attr_writer`是用于快速创建属性的元编程工具。符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`...

    Ruby从入门到精通pdf

    - 属性与方法:通过attr_accessor、attr_reader和attr_writer定义属性,方法可以动态添加和删除。 - 构造器:Ruby中的构造器通常是initialize方法,用于初始化新对象。 3. **块与闭包**: - 块:Ruby中的代码块...

    将复杂的SQL查询refactor成model形式

    在编写模型类时,我们还可以利用`attr_accessor`, `attr_reader`, `attr_writer`这三个方法来声明实例变量供外部使用。`attr_accessor`提供读写权限,`attr_reader`只提供读权限,而`attr_writer`则只提供写权限。...

    学习ruby一些重点总结,以及部门代码实例,个人认为还是比较细致的

    - `attr_reader :motherland` 创建了一个getter方法,用于获取实例变量`@motherland`的值。在类中使用`motherland`来读取。 - `attr_accessor :motherland` 同时创建getter和setter方法。 2. **数组(Array)**:...

    Ruby入门培训ppt/pdf及代码

    通过`class`定义类,`new`创建对象,`attr_accessor`、`attr_reader`和`attr_writer`用于生成getter和setter方法。 ### Ruby Learning 这个压缩包可能包含了一个PPT和PDF文档,以及一些示例代码,帮助初学者理解...

Global site tag (gtag.js) - Google Analytics