diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-02-11 22:22:19 +0000 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-02-14 01:40:31 +0000 |
commit | a7e19b30ca71f62af516675023659be061b2b70a (patch) | |
tree | f79f1347800952dff958dca5f34f1ce011e365ed /activerecord/lib/active_record/association_preload.rb | |
parent | fd7605826a6e4f7590e4abf42c6c9d0923afc4ef (diff) | |
download | rails-a7e19b30ca71f62af516675023659be061b2b70a.tar.gz rails-a7e19b30ca71f62af516675023659be061b2b70a.tar.bz2 rails-a7e19b30ca71f62af516675023659be061b2b70a.zip |
Add interpolation of association conditions back in, in the form of proc { ... } rather than instance_eval-ing strings
Diffstat (limited to 'activerecord/lib/active_record/association_preload.rb')
-rw-r--r-- | activerecord/lib/active_record/association_preload.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/association_preload.rb b/activerecord/lib/active_record/association_preload.rb index b83c00e9f8..52d2c49836 100644 --- a/activerecord/lib/active_record/association_preload.rb +++ b/activerecord/lib/active_record/association_preload.rb @@ -399,10 +399,18 @@ module ActiveRecord end end + def process_conditions(conditions, klass = self) + if conditions.respond_to?(:to_proc) + conditions = instance_eval(&conditions) + end + + klass.send(:sanitize_sql, conditions) + end + def append_conditions(reflection, preload_options) [ - ("(#{reflection.sanitized_conditions})" if reflection.sanitized_conditions), - ("(#{sanitize_sql preload_options[:conditions]})" if preload_options[:conditions]), + ('(' + process_conditions(reflection.options[:conditions], reflection.klass) + ')' if reflection.options[:conditions]), + ('(' + process_conditions(preload_options[:conditions]) + ')' if preload_options[:conditions]), ].compact.map { |x| Arel.sql x } end |