Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
36440720
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,发现更多精彩内容 >>
未验证
提交
36440720
编写于
9月 26, 2018
作者:
E
Eileen M. Uchitelle
提交者:
GitHub
9月 26, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #31819 from bpohoriletz/master
If association is a hash-like object preloading fails
上级
a592e87a
92e024c6
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
29 addition
and
4 deletion
+29
-4
activerecord/lib/active_record/associations/preloader.rb
activerecord/lib/active_record/associations/preloader.rb
+3
-4
activerecord/test/cases/associations/eager_test.rb
activerecord/test/cases/associations/eager_test.rb
+26
-0
未找到文件。
activerecord/lib/active_record/associations/preloader.rb
浏览文件 @
36440720
...
...
@@ -98,12 +98,11 @@ def preload(records, associations, preload_scope = nil)
# Loads all the given data into +records+ for the +association+.
def
preloaders_on
(
association
,
records
,
scope
,
polymorphic_parent
=
false
)
case
association
when
Hash
if
association
.
respond_to?
(
:to_hash
)
preloaders_for_hash
(
association
,
records
,
scope
,
polymorphic_parent
)
when
Symbol
elsif
association
.
is_a?
(
Symbol
)
preloaders_for_one
(
association
,
records
,
scope
,
polymorphic_parent
)
when
String
elsif
association
.
respond_to?
(
:to_str
)
preloaders_for_one
(
association
.
to_sym
,
records
,
scope
,
polymorphic_parent
)
else
raise
ArgumentError
,
"
#{
association
.
inspect
}
was not recognized for preload"
...
...
activerecord/test/cases/associations/eager_test.rb
浏览文件 @
36440720
...
...
@@ -1618,6 +1618,32 @@ def test_preloading_has_many_through_with_custom_scope
end
end
# Associations::Preloader#preloaders_on works with hash-like objects
test
"preloading works with an object that responds to :to_hash"
do
CustomHash
=
Class
.
new
(
Hash
)
assert_nothing_raised
do
Post
.
preload
(
CustomHash
.
new
(
comments:
[{
author: :essays
}])).
first
end
end
# Associations::Preloader#preloaders_on works with string-like objects
test
"preloading works with an object that responds to :to_str"
do
CustomString
=
Class
.
new
(
String
)
assert_nothing_raised
do
Post
.
preload
(
CustomString
.
new
(
"comments"
)).
first
end
end
# Associations::Preloader#preloaders_on does not work with ranges
test
"preloading fails when Range is passed"
do
exception
=
assert_raises
(
ArgumentError
)
do
Post
.
preload
(
1
..
10
).
first
end
assert_equal
(
"1..10 was not recognized for preload"
,
exception
.
message
)
end
private
def
find_all_ordered
(
klass
,
include
=
nil
)
klass
.
order
(
"
#{
klass
.
table_name
}
.
#{
klass
.
primary_key
}
"
).
includes
(
include
).
to_a
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录