mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
280d6eb2e1
Define `value_for_database` and `value_before_type_cast` methods, and use those.
44 lines
812 B
Ruby
44 lines
812 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Arel # :nodoc: all
|
|
module Nodes
|
|
class BindParam < Node
|
|
attr_reader :value
|
|
|
|
def initialize(value)
|
|
@value = value
|
|
super()
|
|
end
|
|
|
|
def hash
|
|
[self.class, self.value].hash
|
|
end
|
|
|
|
def eql?(other)
|
|
other.is_a?(BindParam) &&
|
|
value == other.value
|
|
end
|
|
alias :== :eql?
|
|
|
|
def nil?
|
|
value.nil?
|
|
end
|
|
|
|
def value_before_type_cast
|
|
if value.respond_to?(:value_before_type_cast)
|
|
value.value_before_type_cast
|
|
else
|
|
value
|
|
end
|
|
end
|
|
|
|
def infinite?
|
|
value.respond_to?(:infinite?) && value.infinite?
|
|
end
|
|
|
|
def unboundable?
|
|
value.respond_to?(:unboundable?) && value.unboundable?
|
|
end
|
|
end
|
|
end
|
|
end
|