Sha256: a42fe357da80f7ab54342e6f8a7285e5421d9c2e31ab48f36eb26c7747f9539c

Contents?: true

Size: 1010 Bytes

Versions: 2

Compression:

Stored size: 1010 Bytes

Contents

class Setting < ActiveRecord::Base
  validates_presence_of :keyname
  validates_presence_of :label
  
  validates_uniqueness_of :keyname
  validates_uniqueness_of :label
  
  def self.grab(*args)
    map = HashWithIndifferentAccess.new

    Setting.find(
      :all, 
      :select => '`keyname`, `keyval`', 
      :conditions => ['keyname IN (?)', args.collect(&:to_s)]
    ).each { |s| map[s.keyname] = s.keyval }

    args.collect {|a| (map.key? a) ? map[a] : nil }
  end
  
  def self.exists?(keyname)
    (Setting.find( :first, :select => '`id`', :conditions => [ 'keyname = ?', keyname.to_s] )) ? true : false
  end
  
  def self.set!(keyname,value)
    setting = Setting.find(:first, :conditions => [ 'keyname = ?', keyname.to_s ] )
    
    raise StandardError unless setting
    
    setting.keyval = value.to_s
    setting.save!
    
    setting.keyval
  end
  
  def authorized_for?(options)
    return true unless options.try(:[],:action)
    
    (options[:action].to_sym != :delete)
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
brisk-bills-0.8.2 app/models/setting.rb
brisk-bills-0.8.1 app/models/setting.rb