Ruby on Rails latest stable (v6.1.7.7) - 1 note - Class: Class

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v4.0.2) is shown here.

These similar methods exist in v6.1.7.7:

cattr_writer(*syms) public

Defines a class attribute if it’s not defined and creates a writer method to allow assignment to the attribute.

class Person
  cattr_writer :hair_colors

Person.hair_colors = [:brown, :black]
Person.class_variable_get("@@hair_colors") # => [:brown, :black] = [:blonde, :red]
Person.class_variable_get("@@hair_colors") # => [:blonde, :red]

The attribute name must be a valid method name in Ruby.

class Person
  cattr_writer :"1_Badname "
# => NameError: invalid attribute name

If you want to opt out the instance writer method, pass instance_writer: false or instance_accessor: false.

class Person
  cattr_writer :hair_colors, instance_writer: false
end = [:blonde, :red] # => NoMethodError

Also, you can pass a block to set up the attribute with a default value.

class Person
  cattr_writer :hair_colors do
    [:brown, :black, :blonde, :red]

Person.class_variable_get("@@hair_colors") # => [:brown, :black, :blonde, :red]
Show source
Register or log in to add new notes.
January 27, 2009 - (v2.1.0 - v2.2.1)
1 thank


Similar to Ruby’s built-in attr_writer, only it creates a class attribute writer method (as opposed to an instance attribute writer method).