Sha256: 842acaa854438ab75d2382f271370a2ed27959f07597ff746ff03471ecf9798d
Contents?: true
Size: 732 Bytes
Versions: 3
Compression:
Stored size: 732 Bytes
Contents
# frozen_string_literal: true module WiseGopher # Register query's params and build query's bind variables class Param attr_reader :name, :type def initialize(name, type_symbol, transform = nil) @name = name.to_s.freeze @type = ActiveRecord::Type.lookup type_symbol @transform = transform&.to_proc end def build_bind(value) prepared_value = @transform ? transform_value(value) : value ActiveRecord::Relation::QueryAttribute.new(name, prepared_value, type) end private def transform_value(value) case @transform.arity when 0 then value.instance_exec(&@transform) else value.instance_eval(&@transform) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
wise_gopher-0.2.1 | lib/wise_gopher/param.rb |
wise_gopher-0.2.0 | lib/wise_gopher/param.rb |
wise_gopher-0.1.0 | lib/wise_gopher/param.rb |