Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add Relation#apply_finder_options for applying old finder options

  • Loading branch information...
commit 61e831564aa4b22983646ecdc15d43991bc0e522 1 parent 488b4c8
@lifo lifo authored
View
30 activerecord/lib/active_record/base.rb
@@ -1563,24 +1563,8 @@ def type_name_with_module(type_name)
end
def construct_finder_arel(options = {}, scope = nil)
- validate_find_options(options)
-
- relation = active_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 = active_relation.apply_finder_options(options)
relation = relation.where(type_condition) if finder_needs_type_condition?
- relation = relation.lock(options[:lock]) if options[:lock].present?
- relation = relation.readonly(options[:readonly]) if options.has_key?(:readonly)
-
relation = scope.merge(relation) if scope
relation
end
@@ -1781,11 +1765,6 @@ def with_scope(method_scoping = {}, action = :merge, &block)
end
method_scoping.assert_valid_keys([ :find, :create ])
-
- if f = method_scoping[:find]
- f.assert_valid_keys(VALID_FIND_OPTIONS)
- end
-
relation = construct_finder_arel(method_scoping[:find] || {})
if current_scoped_methods && current_scoped_methods.create_with_value && method_scoping[:create]
@@ -2047,13 +2026,6 @@ def raise_if_bind_arity_mismatch(statement, expected, provided) #:nodoc:
end
end
- VALID_FIND_OPTIONS = [ :conditions, :include, :joins, :limit, :offset,
- :order, :select, :readonly, :group, :having, :from, :lock ]
-
- def validate_find_options(options) #:nodoc:
- options.assert_valid_keys(VALID_FIND_OPTIONS)
- end
-
def encode_quoted_value(value) #:nodoc:
quoted_value = connection.quote(value)
quoted_value = "'#{quoted_value[1..-2].gsub(/\'/, "\\\\'")}'" if quoted_value.include?("\\\'") # (for ruby mode) "
View
23 activerecord/lib/active_record/relation/spawn_methods.rb
@@ -88,5 +88,28 @@ def only(*onlies)
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

0 comments on commit 61e8315

Please sign in to comment.
Something went wrong with that request. Please try again.