mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #22257 from yui-knk/fix_merge_to_not_call_to_proc_for_hash
Make `AR::SpawnMethods#merge!` to check an arg is a Proc
This commit is contained in:
commit
5e36c5057a
2 changed files with 9 additions and 3 deletions
|
@ -12,6 +12,7 @@ module ActiveRecord
|
|||
|
||||
# Merges in the conditions from <tt>other</tt>, if <tt>other</tt> is an ActiveRecord::Relation.
|
||||
# Returns an array representing the intersection of the resulting records with <tt>other</tt>, if <tt>other</tt> is an array.
|
||||
#
|
||||
# Post.where(published: true).joins(:comments).merge( Comment.where(spam: false) )
|
||||
# # Performs a single join query with both where conditions.
|
||||
#
|
||||
|
@ -37,11 +38,12 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def merge!(other) # :nodoc:
|
||||
if !other.is_a?(Relation) && other.respond_to?(:to_proc)
|
||||
if other.is_a?(Hash)
|
||||
Relation::HashMerger.new(self, other).merge
|
||||
elsif other.respond_to?(:to_proc)
|
||||
instance_exec(&other)
|
||||
else
|
||||
klass = other.is_a?(Hash) ? Relation::HashMerger : Relation::Merger
|
||||
klass.new(self, other).merge
|
||||
Relation::Merger.new(self, other).merge
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -24,6 +24,10 @@ module ActiveRecord
|
|||
def self.sanitize_sql_for_order(sql)
|
||||
sql
|
||||
end
|
||||
|
||||
def self.arel_table
|
||||
Post.arel_table
|
||||
end
|
||||
end
|
||||
|
||||
def test_construction
|
||||
|
|
Loading…
Reference in a new issue