提交 f7114754 编写于 作者: R Rafael Mendonça França

Merge pull request #10898 from dmitry/find_first_refactor_duplication

Refactored ActiveRecord `first` method to get rid of duplication.
...@@ -124,11 +124,7 @@ def take! ...@@ -124,11 +124,7 @@ def take!
# #
def first(limit = nil) def first(limit = nil)
if limit if limit
if order_values.empty? && primary_key find_first_with_limit(order_values, limit)
order(arel_table[primary_key].asc).limit(limit).to_a
else
limit(limit).to_a
end
else else
find_first find_first
end end
...@@ -358,12 +354,15 @@ def find_first ...@@ -358,12 +354,15 @@ def find_first
if loaded? if loaded?
@records.first @records.first
else else
@first ||= @first ||= find_first_with_limit(with_default_scope.order_values, 1).first
if with_default_scope.order_values.empty? && primary_key end
order(arel_table[primary_key].asc).limit(1).to_a.first end
else
limit(1).to_a.first def find_first_with_limit(order_values, limit)
end if order_values.empty? && primary_key
order(arel_table[primary_key].asc).limit(limit).to_a
else
limit(limit).to_a
end end
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册