Sha256: 0213a3d5aa1476e01aa101a2cdfaf6f0d7ae839677548ef4a8dc0c7b1b859aef
Contents?: true
Size: 836 Bytes
Versions: 2
Compression:
Stored size: 836 Bytes
Contents
# encoding: UTF-8 require 'forwardable' require 'enumerator' module ArelHelpers class QueryBuilder extend Forwardable include Enumerable attr_reader :query def_delegators :@query, :to_a, :to_sql, :each TERMINAL_METHODS = [:count, :first, :last] TERMINAL_METHODS << :pluck if ActiveRecord::VERSION::MAJOR >= 4 def_delegators :@query, *TERMINAL_METHODS def self.not_nil(name) mod = Module.new do define_method(name) do |*args| if (value = super(*args)) value else reflect(query) end end end prepend mod name end def initialize(query) @query = query end protected def reflect(query) dup.tap { |obj| obj.instance_variable_set('@query'.freeze, query) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
arel-helpers-2.12.0 | lib/arel-helpers/query_builder.rb |
arel-helpers-2.11.0 | lib/arel-helpers/query_builder.rb |