config_accessor

config_accessor(*names)
Instance Public methods

Allows you to add shortcut so that you don't have to refer to attribute through config. Also look at the example for config to contrast.

Defines both class and instance config accessors.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access
end
 
User.allowed_access # => nil
User.allowed_access = false
User.allowed_access # => false
 
user = User.new
user.allowed_access # => false
user.allowed_access = true
user.allowed_access # => true
 
User.allowed_access # => false

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

1
2
3
4
5
class User
  include ActiveSupport::Configurable
  config_accessor :"1_Badname"
end
# => NameError: invalid config attribute name

To opt out of the instance writer method, pass instance_writer: false. To opt out of the instance reader method, pass instance_reader: false.

1
2
3
4
5
6
7
8
9
10
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access, instance_reader: false, instance_writer: false
end
 
User.allowed_access = false
User.allowed_access # => false
 
User.new.allowed_access = true # => NoMethodError
User.new.allowed_access        # => NoMethodError

Or pass instance_accessor: false, to opt out both instance methods.

1
2
3
4
5
6
7
8
9
10
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access, instance_accessor: false
end
 
User.allowed_access = false
User.allowed_access # => false
 
User.new.allowed_access = true # => NoMethodError
User.new.allowed_access        # => NoMethodError

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

1
2
3
4
5
6
7
8
class User
  include ActiveSupport::Configurable
  config_accessor :hair_colors do
    [:brown, :black, :blonde, :red]
  end
end
 
User.hair_colors # => [:brown, :black, :blonde, :red]
doc_ruby_on_rails
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.