aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2010-01-16 21:21:20 +0530
committerPratik Naik <pratiknaik@gmail.com>2010-01-16 21:21:20 +0530
commit61e831564aa4b22983646ecdc15d43991bc0e522 (patch)
treed14aacd07e87a9331241a295b46ff6fbd5d60aa4 /activerecord/lib/active_record/relation
parent488b4c8c5c8e441c0aaaa9d4f71263dd3beacde4 (diff)
downloadrails-61e831564aa4b22983646ecdc15d43991bc0e522.tar.gz
rails-61e831564aa4b22983646ecdc15d43991bc0e522.tar.bz2
rails-61e831564aa4b22983646ecdc15d43991bc0e522.zip
Add Relation#apply_finder_options for applying old finder options
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/spawn_methods.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/spawn_methods.rb b/activerecord/lib/active_record/relation/spawn_methods.rb
index a248c72715..59cfca85ae 100644
--- a/activerecord/lib/active_record/relation/spawn_methods.rb
+++ b/activerecord/lib/active_record/relation/spawn_methods.rb
@@ -88,5 +88,28 @@ module ActiveRecord
result
end
+ VALID_FIND_OPTIONS = [ :conditions, :include, :joins, :limit, :offset,
+ :order, :select, :readonly, :group, :having, :from, :lock ]
+
+ def apply_finder_options(options)
+ options.assert_valid_keys(VALID_FIND_OPTIONS)
+
+ relation = joins(options[:joins]).
+ where(options[:conditions]).
+ select(options[:select]).
+ group(options[:group]).
+ having(options[:having]).
+ order(options[:order]).
+ limit(options[:limit]).
+ offset(options[:offset]).
+ from(options[:from]).
+ includes(options[:include])
+
+ relation = relation.lock(options[:lock]) if options[:lock].present?
+ relation = relation.readonly(options[:readonly]) if options.has_key?(:readonly)
+
+ relation
+ end
+
end
end