Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
b155fdad
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b155fdad
编写于
3月 29, 2011
作者:
A
Andrew White
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Change exists? so that it doesn't instantiate records [#6127 state:resolved]
上级
84a4ef63
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
4 deletion
+15
-4
activerecord/lib/active_record/relation/finder_methods.rb
activerecord/lib/active_record/relation/finder_methods.rb
+10
-4
activerecord/test/cases/finder_test.rb
activerecord/test/cases/finder_test.rb
+5
-0
未找到文件。
activerecord/lib/active_record/relation/finder_methods.rb
浏览文件 @
b155fdad
...
...
@@ -183,7 +183,9 @@ def all(*args)
def
exists?
(
id
=
nil
)
id
=
id
.
id
if
ActiveRecord
::
Base
===
id
relation
=
select
(
"1"
).
limit
(
1
)
join_dependency
=
construct_join_dependency_for_association_find
relation
=
construct_relation_for_association_find
(
join_dependency
)
relation
=
relation
.
except
(
:select
).
select
(
"1"
).
limit
(
1
)
case
id
when
Array
,
Hash
...
...
@@ -192,14 +194,13 @@ def exists?(id = nil)
relation
=
relation
.
where
(
table
[
primary_key
].
eq
(
id
))
if
id
end
relation
.
first
?
true
:
false
connection
.
select_value
(
relation
.
to_sql
)
?
true
:
false
end
protected
def
find_with_associations
including
=
(
@eager_load_values
+
@includes_values
).
uniq
join_dependency
=
ActiveRecord
::
Associations
::
JoinDependency
.
new
(
@klass
,
including
,
[])
join_dependency
=
construct_join_dependency_for_association_find
relation
=
construct_relation_for_association_find
(
join_dependency
)
rows
=
connection
.
select_all
(
relation
.
to_sql
,
'SQL'
,
relation
.
bind_values
)
join_dependency
.
instantiate
(
rows
)
...
...
@@ -207,6 +208,11 @@ def find_with_associations
[]
end
def
construct_join_dependency_for_association_find
including
=
(
@eager_load_values
+
@includes_values
).
uniq
ActiveRecord
::
Associations
::
JoinDependency
.
new
(
@klass
,
including
,
[])
end
def
construct_relation_for_association_calculations
including
=
(
@eager_load_values
+
@includes_values
).
uniq
join_dependency
=
ActiveRecord
::
Associations
::
JoinDependency
.
new
(
@klass
,
including
,
arel
.
froms
.
first
)
...
...
activerecord/test/cases/finder_test.rb
浏览文件 @
b155fdad
...
...
@@ -74,6 +74,11 @@ def test_exists_with_scoped_include
end
end
def
test_exists_does_not_instantiate_records
Developer
.
expects
(
:instantiate
).
never
Developer
.
exists?
end
def
test_find_by_array_of_one_id
assert_kind_of
(
Array
,
Topic
.
find
([
1
]))
assert_equal
(
1
,
Topic
.
find
([
1
]).
length
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录