Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
9066e340
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,发现更多精彩内容 >>
提交
9066e340
编写于
9月 05, 2011
作者:
A
Arun Agrawal
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
We need to recorder here. Need to drop the order from default scope.
Fixes #2832
上级
e865d125
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
31 addition
and
1 deletion
+31
-1
activerecord/lib/active_record/relation/batches.rb
activerecord/lib/active_record/relation/batches.rb
+1
-1
activerecord/test/cases/batches_test.rb
activerecord/test/cases/batches_test.rb
+20
-0
activerecord/test/models/post.rb
activerecord/test/models/post.rb
+10
-0
未找到文件。
activerecord/lib/active_record/relation/batches.rb
浏览文件 @
9066e340
...
@@ -62,7 +62,7 @@ def find_in_batches(options = {})
...
@@ -62,7 +62,7 @@ def find_in_batches(options = {})
start
=
options
.
delete
(
:start
).
to_i
start
=
options
.
delete
(
:start
).
to_i
batch_size
=
options
.
delete
(
:batch_size
)
||
1000
batch_size
=
options
.
delete
(
:batch_size
)
||
1000
relation
=
relation
.
except
(
:order
).
order
(
batch_order
).
limit
(
batch_size
)
relation
=
relation
.
re
order
(
batch_order
).
limit
(
batch_size
)
records
=
relation
.
where
(
table
[
primary_key
].
gteq
(
start
)).
all
records
=
relation
.
where
(
table
[
primary_key
].
gteq
(
start
)).
all
while
records
.
any?
while
records
.
any?
...
...
activerecord/test/cases/batches_test.rb
浏览文件 @
9066e340
...
@@ -113,7 +113,27 @@ def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_orig
...
@@ -113,7 +113,27 @@ def test_find_in_batches_should_not_use_records_after_yielding_them_in_case_orig
batch
.
map!
{
not_a_post
}
batch
.
map!
{
not_a_post
}
end
end
end
end
end
def
test_find_in_batches_should_ignore_the_order_default_scope
# First post is with title scope
first_post
=
PostWithDefaultScope
.
first
posts
=
[]
PostWithDefaultScope
.
find_in_batches
do
|
batch
|
posts
.
concat
(
batch
)
end
# posts.first will be ordered using id only. Title order scope should not apply here
assert_not_equal
first_post
,
posts
.
first
assert_equal
posts
(
:welcome
),
posts
.
first
end
def
test_find_in_batches_should_not_ignore_the_default_scope_if_it_is_other_then_order
special_posts_ids
=
SpecialPostWithDefaultScope
.
all
.
map
(
&
:id
)
posts
=
[]
SpecialPostWithDefaultScope
.
find_in_batches
do
|
batch
|
posts
.
concat
(
batch
)
end
assert_equal
special_posts_ids
,
posts
.
map
(
&
:id
)
end
end
end
end
activerecord/test/models/post.rb
浏览文件 @
9066e340
...
@@ -172,3 +172,13 @@ class PostWithDefaultInclude < ActiveRecord::Base
...
@@ -172,3 +172,13 @@ class PostWithDefaultInclude < ActiveRecord::Base
default_scope
includes
(
:comments
)
default_scope
includes
(
:comments
)
has_many
:comments
,
:foreign_key
=>
:post_id
has_many
:comments
,
:foreign_key
=>
:post_id
end
end
class
PostWithDefaultScope
<
ActiveRecord
::
Base
self
.
table_name
=
'posts'
default_scope
:order
=>
:title
end
class
SpecialPostWithDefaultScope
<
ActiveRecord
::
Base
self
.
table_name
=
'posts'
default_scope
where
(
:id
=>
[
1
,
5
,
6
])
end
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录