Module: PagerTree::Integrations::BooleanStoreAccessor
- Included in:
- Integration
- Defined in:
- app/models/pager_tree/integrations/boolean_store_accessor.rb
Overview
gist.github.com/ozgun/e062ff629708286f7211 File: app/models/concerns/boolean_store_accessor.rb
When we submit a form in order to update a model, a booelan/checkbox field is posted as ‘1’ or ‘0’, and if we are using ActiveRecord::Store, posted value is stored in database as ‘1’ or ‘0’. By the help of this module, we store ‘1’ and ‘0’ values as ‘true` or `false`.
Example usage:
“‘ class Page < ActiveRecord::Base
extend BooleanStoreAccessor
store :settings, accessors: [:hide_from_navigation]
boolean_store_accessor :hide_from_navigation
end
page = Page.first page.hide_from_navigation? #=> false page.hide_from_navigation = true page.save page.hide_from_navigation? #=> true page.settings #=> “hide_from_navigation”=>true “‘
Instance Method Summary collapse
Instance Method Details
#boolean_store_accessor(attr_name) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/models/pager_tree/integrations/boolean_store_accessor.rb', line 27 def boolean_store_accessor(attr_name) define_method "#{attr_name}=".to_sym do |value| values = ["1", true] super(values.include?(value)) end define_method attr_name do values = [nil, false, "0"] !values.include?(super()) end define_method "#{attr_name}?".to_sym do send(attr_name) end end |