Search code examples
ruby-on-railsrubyattr-accessor

attr_accessor default values


I'm using rails and I want to make it so that attr_accessor :politics is set, by default, to false.

Does anyone know how to do this and is able to explain it in simple terms for me?


Solution

  • Rails 4+

    class Like < ApplicationRecord
      def after_initialize
        self.politics = false
      end
    end
    
    i = Like.new
    i.politics #=> false
    

    Rails 3.1 and below

    class Like
      attr_accessor_with_default :politics, false
    end
    
    i = Like.new
    i.politics #=> false
    

    Pure Ruby

    class Like
      attr_writer :politics
          
      def politics
        @politics || false
      end
    end
    
    i = Like.new
    i.politics #=> false