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?
Rails has attr_accessor_with_default so you could write
class Like
attr_accessor_with_default :politics,false
end
i = Like.new
i.politics #=> false
and thats all
UPDATE
attr_accessor_with_default has been deprecated in Rails 3.2.. you could do this instead with pure Ruby
class Like
attr_writer :politics
def politics
@politics || false
end
end
i = Like.new
i.politics #=> false
You could use the virtus gem:
https://github.com/solnic/virtus
From the README:
Virtus allows you to define attributes on classes, modules or class instances with optional information about types, reader/writer method visibility and coercion behavior. It supports a lot of coercions and advanced mapping of embedded objects and collections.
It specifically supports default values.
If you define your attr_accessor
, by default the value is nil
. You can write to it, thereby making it !nil