I am not sure where to post this, suggestions are welcome.
Whenever you create a virtual boolean attribute in your model, e.g.
attr_writer :some_boolean
def some_boolean; defined?(@some_boolean) ? @some_boolean : true; end # defaults to true
attr_accessible :some_boolean
And make it a checkbox in the model's input form, e.g. (simple_form, haml)
!= f.input :some_boolean, :as => :boolean
And try to do some reasoning with it, e.g...
after_create { ... if @some_boolean }
You may be surprised as @some_boolean
will always resolve to true
(actually to 0/1, but both are true
in Ruby).
A quick and dirty workaround would be... well... getting your controller dirty quickly:
before_filter :boolean_fix
...
def boolean_fix
params[:some_model][:some_boolean] = false if params[:some_model] && params[:some_model][:some_boolean] == '0'
end