Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
b28b54ca
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 搜索 >>
提交
b28b54ca
编写于
5月 04, 2008
作者:
J
John Devine
提交者:
Pratik Naik
5月 15, 2008
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make sure needed table joins are included :select option. [#110 state:resolved]
Signed-off-by:
N
Pratik Naik
<
pratiknaik@gmail.com
>
上级
6df995bb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
4 deletion
+21
-4
activerecord/lib/active_record/associations.rb
activerecord/lib/active_record/associations.rb
+15
-1
activerecord/test/cases/finder_test.rb
activerecord/test/cases/finder_test.rb
+6
-3
未找到文件。
activerecord/lib/active_record/associations.rb
浏览文件 @
b28b54ca
...
...
@@ -1500,6 +1500,12 @@ def order_tables(options)
order
.
scan
(
/([\.\w]+).?\./
).
flatten
end
def
selects_tables
(
options
)
select
=
options
[
:select
]
return
[]
unless
select
&&
select
.
is_a?
(
String
)
select
.
scan
(
/"?([\.\w]+)"?.?\./
).
flatten
end
# Checks if the conditions reference a table other than the current model table
def
include_eager_conditions?
(
options
,
tables
=
nil
)
tables
=
conditions_tables
(
options
)
...
...
@@ -1518,8 +1524,16 @@ def include_eager_order?(options,tables = nil)
end
end
def
include_eager_select?
(
options
)
selects
=
selects_tables
(
options
)
return
false
unless
selects
.
any?
selects
.
any?
do
|
select
|
select
!=
table_name
end
end
def
references_eager_loaded_tables?
(
options
)
include_eager_order?
(
options
)
||
include_eager_conditions?
(
options
)
include_eager_order?
(
options
)
||
include_eager_conditions?
(
options
)
||
include_eager_select?
(
options
)
end
def
using_limitable_reflections?
(
reflections
)
...
...
activerecord/test/cases/finder_test.rb
浏览文件 @
b28b54ca
...
...
@@ -859,12 +859,15 @@ def test_select_rows
end
def
test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct
assert_equal
2
,
Post
.
find
(
:all
,
:include
=>
{
:authors
=>
:author_address
},
:order
=>
' author_addresses.id DESC '
,
:limit
=>
2
).
size
assert_equal
2
,
Post
.
find
(
:all
,
:include
=>
{
:authors
=>
:author_address
},
:order
=>
' author_addresses.id DESC '
,
:limit
=>
2
).
size
assert_equal
3
,
Post
.
find
(
:all
,
:include
=>
{
:author
=>
:author_address
,
:authors
=>
:author_address
},
:order
=>
' author_addresses_authors.id DESC '
,
:limit
=>
3
).
size
assert_equal
3
,
Post
.
find
(
:all
,
:include
=>
{
:author
=>
:author_address
,
:authors
=>
:author_address
},
:order
=>
' author_addresses_authors.id DESC '
,
:limit
=>
3
).
size
end
def
test_with_limiting_with_custom_select
assert_equal
3
,
Post
.
find
(
:all
,
:include
=>
:author
,
:select
=>
' posts.*, authors.id as "author_id"'
,
:limit
=>
3
).
size
end
protected
def
bind
(
statement
,
*
vars
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录