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?
attr_accessor is a shortcut method when you need both attr_reader and attr_writer . Since both reading and writing data are common, the idiomatic method attr_accessor is quite useful.
attr_accessible is used to identify attributes that are accessible by your controller methods makes a property available for mass-assignment.. It will only allow access to the attributes that you specify, denying the rest.
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 love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With