instance method attr_accessor_with_default

Ruby on Rails 3.0.20

Since v2.2.3 Last seen in v3.1.12

Available in: v2.2.3 v2.3.18 v3.0.20 v3.1.12

Signature

attr_accessor_with_default(sym, default = nil, &block)

Declare an attribute accessor with an initial default return value.

To give attribute :age the initial value 25:

class Person
  attr_accessor_with_default :age, 25
end

some_person.age
=> 25
some_person.age = 26
some_person.age
=> 26

To give attribute :element_name a dynamic default value, evaluated in scope of self:

attr_accessor_with_default(:element_name) { name.underscore }

Parameters

sym req
default opt = nil
block block
Source
# File activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb, line 21
  def attr_accessor_with_default(sym, default = nil, &block)
    raise 'Default value or block required' unless !default.nil? || block
    define_method(sym, block_given? ? block : Proc.new { default })
    module_eval(<<-EVAL, __FILE__, __LINE__ + 1)
      def #{sym}=(value)                        # def age=(value)
        class << self; attr_reader :#{sym} end  #   class << self; attr_reader :age end
        @#{sym} = value                         #   @age = value
      end                                       # end
    EVAL
  end

Defined in activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb line 21 · View on GitHub · Improve this page · Find usages on GitHub

Defined in Module

Type at least 2 characters to search.

↑↓ navigate · open · esc close