Sha256: f2df2915277b1d035c73697049fa9894dfeaa345f8befd92a1ad2e66df1de982

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

# Rails 4.2+ doesn't need this monkeypatch. So we only modify ActiveRecord for < 4.2
if ActiveRecord::VERSION::MAJOR < 5 && ActiveRecord::VERSION::MINOR < 2
  require 'active_record/connection_adapters/postgresql_adapter'

  ActiveRecord::ConnectionAdapters::TableDefinition.class_eval do
    def citext(*args)
      options = args.extract_options!
      column(args[0], 'citext', options)
    end
  end

  ActiveRecord::ConnectionAdapters::Column.class_eval do
    def simplified_type_with_citext_support(field_type)
      if field_type == "citext"
        :citext
      else
        simplified_type_without_citext_support(field_type)
      end
    end
    alias_method_chain :simplified_type, :citext_support
  end

  ActiveRecord::ConnectionAdapters::PostgreSQLColumn.class_eval do
    def self.extract_value_from_default_with_citext_support(default)
      if default =~ /\A'(.*)'::(?:citext)\z/m
        $1
      else
        extract_value_from_default_without_citext_support(default)
      end
    end
    class << self
      alias_method_chain :extract_value_from_default, :citext_support
    end
  end

  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
    def native_database_types_with_citext
      native_database_types_without_citext.merge(
        :citext => { :name => "citext" }
      )
    end
    alias_method_chain :native_database_types, :citext
  end

  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID.alias_type "citext", "text"
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
staq-activerecord-postgresql-citext-0.2.0 lib/activerecord/postgresql/citext.rb