From ea8729a5d569fc87945025c4db27f95982b6b249 Mon Sep 17 00:00:00 2001 From: Georg Ledermann Date: Fri, 8 Mar 2013 11:02:34 +0100 Subject: [PATCH] Scopes simplified by using class methods --- lib/rails-settings.rb | 4 ++-- lib/rails-settings/scopes.rb | 44 ++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/lib/rails-settings.rb b/lib/rails-settings.rb index 17b6d64c..2a18ef13 100644 --- a/lib/rails-settings.rb +++ b/lib/rails-settings.rb @@ -7,8 +7,8 @@ def self.has_settings(*args, &block) RailsSettings::Configuration.new(*args.unshift(self), &block) - include RailsSettings::Base unless self.include?(RailsSettings::Base) - include RailsSettings::Scopes unless self.include?(RailsSettings::Scopes) + include RailsSettings::Base + extend RailsSettings::Scopes end end diff --git a/lib/rails-settings/scopes.rb b/lib/rails-settings/scopes.rb index 750a740b..fa44b831 100644 --- a/lib/rails-settings/scopes.rb +++ b/lib/rails-settings/scopes.rb @@ -1,33 +1,29 @@ module RailsSettings module Scopes - def self.included(base) - base.class_eval do - scope :with_settings, lambda { - joins("INNER JOIN settings ON #{settings_join_condition}"). - uniq - } + def with_settings + joins("INNER JOIN settings ON #{settings_join_condition}"). + uniq + end - scope :with_settings_for, lambda { |var| - raise ArgumentError unless var.is_a?(Symbol) - joins("INNER JOIN settings ON #{settings_join_condition} AND settings.var = '#{var}'") - } + def with_settings_for(var) + raise ArgumentError.new('Symbol expected!') unless var.is_a?(Symbol) + joins("INNER JOIN settings ON #{settings_join_condition} AND settings.var = '#{var}'") + end - scope :without_settings, lambda { - joins("LEFT JOIN settings ON #{settings_join_condition}"). - where('settings.id IS NULL') - } + def without_settings + joins("LEFT JOIN settings ON #{settings_join_condition}"). + where('settings.id IS NULL') + end - scope :without_settings_for, lambda { |var| - raise ArgumentError unless var.is_a?(Symbol) - joins("LEFT JOIN settings ON #{settings_join_condition} AND settings.var = '#{var}'"). - where('settings.id IS NULL') - } + def without_settings_for(var) + raise ArgumentError.new('Symbol expected!') unless var.is_a?(Symbol) + joins("LEFT JOIN settings ON #{settings_join_condition} AND settings.var = '#{var}'"). + where('settings.id IS NULL') + end - def self.settings_join_condition - "settings.target_id = #{table_name}.#{primary_key} AND - settings.target_type = '#{base_class.name}'" - end - end + def settings_join_condition + "settings.target_id = #{table_name}.#{primary_key} AND + settings.target_type = '#{base_class.name}'" end end end