diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-12-26 18:02:56 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-12-26 18:02:56 -0700 |
commit | 008445d6fd5f825d9b445ac75a7be67f0f7ab52c (patch) | |
tree | f8d44ff38bb86196116152f05a10dab157fe972c /lib | |
parent | cf03bd45e39def057a2f63e42a3391b7d750dece (diff) | |
download | rails-008445d6fd5f825d9b445ac75a7be67f0f7ab52c.tar.gz rails-008445d6fd5f825d9b445ac75a7be67f0f7ab52c.tar.bz2 rails-008445d6fd5f825d9b445ac75a7be67f0f7ab52c.zip |
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.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arel/nodes.rb | 11 |
1 files changed, 11 insertions, 0 deletions
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 |