Sha256: ea22da50b1c1248275c68650c7523cc7dee19ec46b5b0b03d74212eb98bfcff3

Contents?: true

Size: 818 Bytes

Versions: 2

Compression:

Stored size: 818 Bytes

Contents

require "sequel/enhancements"

module Sequel
  module Plugins
    module StringUpcaser
      def self.apply(model, *args)
        model.instance_eval do
          @upcase_columns = Set.new
        end
      end

      def self.configure(model, column)
        model.add_upcase_column column
      end

      module ClassMethods
        Plugins.inherited_instance_variables(self, :@upcase_columns => :dup)

        def add_upcase_column(column)
          @upcase_columns << column
        end

        def upcase_column?(column)
          @upcase_columns.include? column
        end
      end

      module InstanceMethods
        def []=(k, v)
          if model.upcase_column?(k) && v.is_a?(String) && !v.is_a?(SQL::Blob)
            v = v.upcase
          end
          super
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sequel-enhancements-0.3.0 lib/sequel/plugins/string_upcaser.rb
sequel-enhancements-0.2.0 lib/sequel/plugins/string_upcaser.rb