refatctoring of some code repetition in spawn_methods

This commit is contained in:
Angelo capilleri 2012-12-31 11:23:19 +01:00 committed by Angelo Capilleri
parent 2b773e148b
commit 1564b085e2
1 changed files with 10 additions and 8 deletions

View File

@ -50,10 +50,7 @@ module ActiveRecord
# Post.order('id asc').except(:order) # discards the order condition
# Post.where('id > 10').order('id asc').except(:where) # discards the where condition but keeps the order
def except(*skips)
result = Relation.new(klass, table, values.except(*skips))
result.default_scoped = default_scoped
result.extend(*extending_values) if extending_values.any?
result
relation_with values.except(*skips)
end
# Removes any condition from the query other than the one(s) specified in +onlies+.
@ -61,11 +58,16 @@ module ActiveRecord
# Post.order('id asc').only(:where) # discards the order condition
# Post.order('id asc').only(:where, :order) # uses the specified order
def only(*onlies)
result = Relation.new(klass, table, values.slice(*onlies))
result.default_scoped = default_scoped
result.extend(*extending_values) if extending_values.any?
result
relation_with values.slice(*onlies)
end
private
def relation_with(values) # :nodoc:
result = Relation.new(klass, table, values)
result.default_scoped = default_scoped
result.extend(*extending_values) if extending_values.any?
result
end
end
end