module ActsAsDefault::InstanceMethods

Public Instance Methods

set_as_default!() click to toggle source
# File lib/acts_as_default.rb, line 28
def set_as_default!
  if default == false
    get_default_object.toggle!(:default)
    toggle!(:default)
  end
end

Private Instance Methods

check_after_destroy() click to toggle source
# File lib/acts_as_default.rb, line 47
def check_after_destroy
  obj = get_default_object
  if obj.nil?
    obj = get_collection.order(created_at: :desc).first
    obj.toggle!(:default) if obj
  end
end
check_before_save() click to toggle source
# File lib/acts_as_default.rb, line 37
def check_before_save
  if self.default
    obj = get_default_object
    obj.toggle!(:default) if obj and obj.id != id
  else
    self.default = check_if_empty?
  end
  return true
end
check_if_empty?() click to toggle source
# File lib/acts_as_default.rb, line 55
def check_if_empty?
  get_collection.size == 0
end
get_collection() click to toggle source
# File lib/acts_as_default.rb, line 59
def get_collection
  if self.class.field_key.nil?
    self.class.all
  else
    self.class.where(self.class.field_key => self[self.class.field_key])
  end
end
get_default_object() click to toggle source
# File lib/acts_as_default.rb, line 67
def get_default_object
  if self.class.field_key.nil?
    self.class.where(default: true).first
  else
    key = self.class.field_key
    self.class.where("#{key} = :key and default = :default", {key: self[key], default: true}).first
  end
end