Sha256: cc40c52e70b782a8c282ec6e24d843582c2559ea9bc11c17bcfe97451e43c78f

Contents?: true

Size: 737 Bytes

Versions: 4

Compression:

Stored size: 737 Bytes

Contents

module Mobility
  module Backend
    class Sequel::Column::QueryMethods < Backend::Sequel::QueryMethods
      def initialize(attributes, **options)
        super
        attributes_extractor = @attributes_extractor

        define_method :_filter_or_exclude do |invert, clause, cond, &block|
          if keys = attributes_extractor.call(cond)
            cond = cond.dup
            keys.each { |attr| cond[Column.column_name_for(attr)] = cond.delete(attr) }
          end
          super(invert, clause, cond, &block)
        end

        attributes.each do |attribute|
          define_method :"first_by_#{attribute}" do |value|
            where(attribute.to_sym => value).first
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mobility-0.1.3 lib/mobility/backend/sequel/column/query_methods.rb
mobility-0.1.2 lib/mobility/backend/sequel/column/query_methods.rb
mobility-0.1.1 lib/mobility/backend/sequel/column/query_methods.rb
mobility-0.1.0 lib/mobility/backend/sequel/column/query_methods.rb