From 753df27bed3221ac07bf5c3615372995398aff9e Mon Sep 17 00:00:00 2001 From: Philip Hofstetter Date: Wed, 28 May 2008 22:45:28 +0200 Subject: [PATCH] precache all settings --- app/models/setting.rb | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/app/models/setting.rb b/app/models/setting.rb index 185991d..5a98de0 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -41,6 +41,11 @@ class Setting < ActiveRecord::Base @@available_settings["plugin_#{id}"] = {'default' => plugin.settings[:default], 'serialized' => true} end + @@settings = {} + find(:all).each do |setting| + @@settings[setting.name] = setting + end + validates_uniqueness_of :name validates_inclusion_of :name, :in => @@available_settings.keys validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' } @@ -119,7 +124,7 @@ private def self.find_or_default(name) name = name.to_s raise "There's no setting named #{name}" unless @@available_settings.has_key?(name) - setting = find_by_name(name) + setting = @@settings[name] if @@settings.has_key? name setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name end end -- 1.5.5.1