From 008445d6fd5f825d9b445ac75a7be67f0f7ab52c Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Fri, 26 Dec 2014 18:02:56 -0700 Subject: Deprecate automatic type casting within Arel Rails now performs all casting eagerly, before passing the value into Arel. Once we remove this, the code on both sides will be simplified greatly. Ideally, we can provide the appropriate public APIs on the Rails side to ease this transition for library authors who depend on this behavior. --- lib/arel/nodes.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib') diff --git a/lib/arel/nodes.rb b/lib/arel/nodes.rb index 7d900fe710..8432106719 100644 --- a/lib/arel/nodes.rb +++ b/lib/arel/nodes.rb @@ -87,6 +87,17 @@ module Arel else case attribute when Arel::Attributes::Attribute + unless $arel_silence_type_casting_deprecation + warn <<-eowarn +Arel performing automatic type casting is deprecated, and will be removed in Arel 8.0. If you are seeing this, it is because you are manually passing a value to an Arel predicate. + +If you're certain the value is already of the right type, change `attribute.eq(value)` to `attribute.eq(Arel::Nodes::Quoted.new(value))` (you will be able to remove that in Arel 8.0, it is only required to silence this deprecation warning). + +You can also silence this warning globally by setting `$arel_silence_type_casting_deprecation` to `true`. (Do NOT do this if you are a library author) + +If you are passing user input to a predicate, you are responsible for type casting appropriately before passing the value to Arel. + eowarn + end Casted.new other, attribute else Quoted.new other -- cgit v1.2.3