Sha256: b7e8b474a81cf72840bab598ecc4fbe4765f4749bf44c81ca5c14a2995e361bb
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
module Arel module Transformer class RemoveActiveRecordInfo class << self def call(arel, _context) tree = Arel.enhance(arel) tree.query(class: Arel::Table).each do |node| node['type_caster'].remove end tree.query(class: Arel::Nodes::BindParam).each do |node| node.replace( cast_for_database(node.object.value.value_for_database), ) end tree.object end private def cast_for_database(value) case value when String Arel::Nodes.build_quoted(value) when Integer value when TrueClass Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('t'), 'bool') when FalseClass Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('f'), 'bool') when Float value else raise "Unknown value cast `#{value}` with class `#{value.class}`" end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
arel_toolkit-0.4.0 | lib/arel/transformer/remove_active_record_info.rb |