Module: Hideable::Macro::ClassMethods

Defined in:
lib/activerecord-hideable/macro.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_hideable(options = {}) ⇒ Object

class Article < ActiveRecord::Base

acts_as_hideable toggle: :hidden

end



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/activerecord-hideable/macro.rb', line 14

def acts_as_hideable(options = {})
  options.reverse_merge!(toggle: Hideable.default_column)
  toggle = options[:toggle]

  scope :hidden, -> { where(toggle => true)  }
  scope :shown,  -> { where(toggle => false) }

  define_method(:shown?)  {  !self[toggle] }
  define_method(:hidden?) { !!self[toggle] } unless toggle == :hidden

  unless respond_to?(:hideable_options)
    class_attribute :hideable_options, instance_accessor: false, instance_predicate: false
  end

  self.hideable_options = options
end