Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
9e60f0f6
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,发现更多精彩内容 >>
提交
9e60f0f6
编写于
9月 23, 2013
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pass the preloader down so we only have to construct one
上级
f34d46ab
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
21 addition
and
21 deletion
+21
-21
activerecord/lib/active_record/associations/preloader.rb
activerecord/lib/active_record/associations/preloader.rb
+4
-2
activerecord/lib/active_record/associations/preloader/association.rb
...d/lib/active_record/associations/preloader/association.rb
+5
-5
activerecord/lib/active_record/associations/preloader/collection_association.rb
...e_record/associations/preloader/collection_association.rb
+2
-2
activerecord/lib/active_record/associations/preloader/has_and_belongs_to_many.rb
..._record/associations/preloader/has_and_belongs_to_many.rb
+1
-1
activerecord/lib/active_record/associations/preloader/has_many_through.rb
.../active_record/associations/preloader/has_many_through.rb
+1
-1
activerecord/lib/active_record/associations/preloader/singular_association.rb
...ive_record/associations/preloader/singular_association.rb
+2
-2
activerecord/lib/active_record/associations/preloader/through_association.rb
...tive_record/associations/preloader/through_association.rb
+6
-8
未找到文件。
activerecord/lib/active_record/associations/preloader.rb
浏览文件 @
9e60f0f6
...
...
@@ -93,7 +93,7 @@ def preload(records, associations, preload_scope = nil)
else
associations
.
flat_map
{
|
association
|
preloaders_on
association
,
records
,
preload_scope
}
.
each
(
&
:run
)
}
end
end
...
...
@@ -133,7 +133,9 @@ def preloaders_for_hash(association, records, scope)
def
preloaders_for_one
(
association
,
records
,
scope
)
grouped_records
(
association
,
records
).
flat_map
do
|
reflection
,
klasses
|
klasses
.
map
do
|
rhs_klass
,
rs
|
preloader_for
(
reflection
).
new
(
rhs_klass
,
rs
,
reflection
,
scope
)
loader
=
preloader_for
(
reflection
).
new
(
rhs_klass
,
rs
,
reflection
,
scope
)
loader
.
run
self
loader
end
end
end
...
...
activerecord/lib/active_record/associations/preloader/association.rb
浏览文件 @
9e60f0f6
...
...
@@ -20,13 +20,13 @@ def initialize(klass, owners, reflection, preload_scope)
@loaded
=
false
end
def
run
def
run
(
preloader
)
unless
owners
.
first
.
association
(
reflection
.
name
).
loaded?
preload
preload
(
preloader
)
end
end
def
preload
def
preload
(
preloader
)
raise
NotImplementedError
end
...
...
@@ -73,7 +73,7 @@ def options
end
def
preloaded_records
associated_records_by_owner
.
values
.
flatten
@
associated_records_by_owner
.
values
.
flatten
end
def
loaded?
...
...
@@ -82,7 +82,7 @@ def loaded?
private
def
associated_records_by_owner
def
associated_records_by_owner
(
preloader
)
@loaded
=
true
return
@associated_records_by_owner
if
@associated_records_by_owner
...
...
activerecord/lib/active_record/associations/preloader/collection_association.rb
浏览文件 @
9e60f0f6
...
...
@@ -9,8 +9,8 @@ def build_scope
super
.
order
(
preload_scope
.
values
[
:order
]
||
reflection_scope
.
values
[
:order
])
end
def
preload
associated_records_by_owner
.
each
do
|
owner
,
records
|
def
preload
(
preloader
)
associated_records_by_owner
(
preloader
)
.
each
do
|
owner
,
records
|
association
=
owner
.
association
(
reflection
.
name
)
association
.
loaded!
association
.
target
.
concat
(
records
)
...
...
activerecord/lib/active_record/associations/preloader/has_and_belongs_to_many.rb
浏览文件 @
9e60f0f6
...
...
@@ -34,7 +34,7 @@ def association_key
# Once we have used the join table column (in super), we manually instantiate the
# actual records, ensuring that we don't create more than one instances of the same
# record
def
associated_records_by_owner
def
associated_records_by_owner
(
preloader
)
return
@associated_records_by_owner
if
@associated_records_by_owner
records
=
{}
...
...
activerecord/lib/active_record/associations/preloader/has_many_through.rb
浏览文件 @
9e60f0f6
...
...
@@ -4,7 +4,7 @@ class Preloader
class
HasManyThrough
<
CollectionAssociation
#:nodoc:
include
ThroughAssociation
def
associated_records_by_owner
def
associated_records_by_owner
(
preloader
)
return
@associated_records_by_owner
if
@associated_records_by_owner
records_by_owner
=
super
...
...
activerecord/lib/active_record/associations/preloader/singular_association.rb
浏览文件 @
9e60f0f6
...
...
@@ -5,8 +5,8 @@ class SingularAssociation < Association #:nodoc:
private
def
preload
associated_records_by_owner
.
each
do
|
owner
,
associated_records
|
def
preload
(
preloader
)
associated_records_by_owner
(
preloader
)
.
each
do
|
owner
,
associated_records
|
record
=
associated_records
.
first
association
=
owner
.
association
(
reflection
.
name
)
...
...
activerecord/lib/active_record/associations/preloader/through_association.rb
浏览文件 @
9e60f0f6
...
...
@@ -11,15 +11,14 @@ def source_reflection
reflection
.
source_reflection
end
def
associated_records_by_owner
def
associated_records_by_owner
(
preloader
)
@loaded
=
true
return
@associated_records_by_owner
if
@associated_records_by_owner
left_loader
=
Preloader
.
new
left_loader
.
preload
(
owners
,
through_reflection
.
name
,
through_scope
)
preloader
.
preload
(
owners
,
through_reflection
.
name
,
through_scope
)
should_reset
=
(
through_scope
!=
through_reflection
.
klass
.
unscoped
)
||
(
reflection
.
options
[
:source_type
]
&&
through_reflection
.
collection?
)
...
...
@@ -37,10 +36,9 @@ def associated_records_by_owner
middle_records
=
through_records
.
map
{
|
(
_
,
rec
,
_
)
|
rec
}.
flatten
preloader
=
Preloader
.
new
preloaders
=
preloader
.
preload
(
middle_records
,
source_reflection
.
name
,
reflection_scope
)
source_reflection
.
name
,
reflection_scope
)
middle_to_pl
=
preloaders
.
each_with_object
({})
do
|
pl
,
h
|
pl
.
owners
.
each
{
|
middle
|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录