Sha256: 9b182c2705e7544bf89d036f06cb944508b98f2ad16cebff8b0c3360a44915c1

Contents?: true

Size: 946 Bytes

Versions: 10

Compression:

Stored size: 946 Bytes

Contents

# -*- encoding : utf-8 -*-
module LoyalCore
  module ActsAsNamedFilterAble
    def self.included base
      base.class_eval do
        extend ClassMethods
      end
    end

    module ClassMethods
      def loyal_core_acts_as_named_filter_able *args
        options = args.extract_options!

        field_name = args.first
        config = options[:config] || ::LoyalCore::ConfigUtil.new

        # color_named_filter_config
        self.class.send :define_method, :"#{field_name}_named_filter_config" do
          config
        end

        # filter_by_named_color
        scope :"filter_by_named_#{field_name}", ->(*names) do
          where :"#{field_name}" => config.values_at(*names)
        end

        # filter_named_color
        define_method :"filter_named_#{field_name}" do
          config.item(self.send field_name)
        end

        include InstanceMethods
      end

      module InstanceMethods

      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
loyal_core-0.0.11 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.10 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.8 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.7 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.6 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.5 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.4 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.3 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.2 lib/loyal_core/acts/named_filter_able.rb
loyal_core-0.0.1 lib/loyal_core/acts/named_filter_able.rb