method
cattr_reader
Ruby on Rails latest stable (v7.1.3.2)
-
2 notes -
Class: Class
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0 (0)
- 2.2.1 (0)
- 2.3.8 (0)
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (38)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
cattr_reader(*syms)
public
Defines a class attribute if it’s not defined and creates a reader method that returns the attribute value.
class Person cattr_reader :hair_colors end Person.class_variable_set("@@hair_colors", [:brown, :black]) Person.hair_colors # => [:brown, :black] Person.new.hair_colors # => [:brown, :black]
The attribute name must be a valid method name in Ruby.
class Person cattr_reader :"1_Badname " end # => NameError: invalid attribute name
If you want to opt out the instance reader method, you can pass instance_reader: false or instance_accessor: false.
class Person cattr_reader :hair_colors, instance_reader: false end Person.new.hair_colors # => NoMethodError
Register or
log in
to add new notes.
zvoase -
January 27, 2009 - (v2.1.0 - v2.2.1)
2 thanks
Description
Similar to Ruby’s built-in attr_reader, only it creates a class attribute reader method (as opposed to an instance attribute reader method).
jackson_pires -
February 2, 2013
0 thanks
Other Example
##
class Exam cattr_reader :code, :description, :points, :instance_reader => false @@code = "EXM" @@description = "Sent Exam" @@points = 1000 end
In this case it’s possible to use
Exam.code # => EXM Exam.description # => Sent Exam Exam.points # => 1000