Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
ae9e1e9f
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,发现更多精彩内容 >>
提交
ae9e1e9f
编写于
8月 07, 2009
作者:
E
Emilio Tagua
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Removed unused methods.
上级
d469ad8a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
70 deletion
+56
-70
activerecord/lib/active_record/associations.rb
activerecord/lib/active_record/associations.rb
+56
-70
未找到文件。
activerecord/lib/active_record/associations.rb
浏览文件 @
ae9e1e9f
...
...
@@ -1639,19 +1639,6 @@ def create_has_and_belongs_to_many_reflection(association_id, options, &extensio
reflection
end
def
reflect_on_included_associations
(
associations
)
[
associations
].
flatten
.
collect
{
|
association
|
reflect_on_association
(
association
.
to_s
.
intern
)
}
end
def
guard_against_unlimitable_reflections
(
reflections
,
options
)
if
(
options
[
:offset
]
||
options
[
:limit
])
&&
!
using_limitable_reflections?
(
reflections
)
raise
(
ConfigurationError
,
"You can not use offset and limit together with has_many or has_and_belongs_to_many associations"
)
end
end
def
select_all_rows
(
options
,
join_dependency
)
connection
.
select_all
(
construct_finder_sql_with_included_associations
(
options
,
join_dependency
),
...
...
@@ -2083,25 +2070,24 @@ def association_join
options
[
:association_foreign_key
]
||
klass
.
to_s
.
foreign_key
]
when
:has_many
,
:has_one
case
when
reflection
.
options
[
:through
]
through_conditions
=
through_reflection
.
options
[
:conditions
]
?
"AND
#{
interpolate_sql
(
sanitize_sql
(
through_reflection
.
options
[
:conditions
]))
}
"
:
''
jt_foreign_key
=
jt_as_extra
=
jt_source_extra
=
jt_sti_extra
=
nil
first_key
=
second_key
=
as_extra
=
nil
if
through_reflection
.
options
[
:as
]
# has_many :through against a polymorphic join
jt_foreign_key
=
through_reflection
.
options
[
:as
].
to_s
+
'_id'
jt_as_extra
=
" AND %s.%s = %s"
%
[
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
through_reflection
.
options
[
:as
].
to_s
+
'_type'
),
klass
.
quote_value
(
parent
.
active_record
.
base_class
.
name
)
]
else
jt_foreign_key
=
through_reflection
.
primary_key_name
end
case
source_reflection
.
macro
if
reflection
.
options
[
:through
]
through_conditions
=
through_reflection
.
options
[
:conditions
]
?
"AND
#{
interpolate_sql
(
sanitize_sql
(
through_reflection
.
options
[
:conditions
]))
}
"
:
''
jt_foreign_key
=
jt_as_extra
=
jt_source_extra
=
jt_sti_extra
=
nil
first_key
=
second_key
=
as_extra
=
nil
if
through_reflection
.
options
[
:as
]
# has_many :through against a polymorphic join
jt_foreign_key
=
through_reflection
.
options
[
:as
].
to_s
+
'_id'
jt_as_extra
=
" AND %s.%s = %s"
%
[
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
through_reflection
.
options
[
:as
].
to_s
+
'_type'
),
klass
.
quote_value
(
parent
.
active_record
.
base_class
.
name
)
]
else
jt_foreign_key
=
through_reflection
.
primary_key_name
end
case
source_reflection
.
macro
when
:has_many
if
source_reflection
.
options
[
:as
]
first_key
=
"
#{
source_reflection
.
options
[
:as
]
}
_id"
...
...
@@ -2134,45 +2120,45 @@ def association_join
else
second_key
=
source_reflection
.
primary_key_name
end
end
"
#{
join_type
}
%s ON (%s.%s = %s.%s%s%s%s) "
%
[
table_alias_for
(
through_reflection
.
klass
.
table_name
,
aliased_join_table_name
),
connection
.
quote_table_name
(
parent
.
aliased_table_name
),
connection
.
quote_column_name
(
parent
.
primary_key
),
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
jt_foreign_key
),
jt_as_extra
,
jt_source_extra
,
jt_sti_extra
]
+
"
#{
join_type
}
%s ON (%s.%s = %s.%s%s) "
%
[
table_name_and_alias
,
connection
.
quote_table_name
(
aliased_table_name
),
connection
.
quote_column_name
(
first_key
),
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
second_key
),
as_extra
]
end
"
#{
join_type
}
%s ON (%s.%s = %s.%s%s%s%s) "
%
[
table_alias_for
(
through_reflection
.
klass
.
table_name
,
aliased_join_table_name
),
connection
.
quote_table_name
(
parent
.
aliased_table_name
),
connection
.
quote_column_name
(
parent
.
primary_key
),
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
jt_foreign_key
),
jt_as_extra
,
jt_source_extra
,
jt_sti_extra
]
+
"
#{
join_type
}
%s ON (%s.%s = %s.%s%s) "
%
[
table_name_and_alias
,
connection
.
quote_table_name
(
aliased_table_name
),
connection
.
quote_column_name
(
first_key
),
connection
.
quote_table_name
(
aliased_join_table_name
),
connection
.
quote_column_name
(
second_key
),
as_extra
]
when
reflection
.
options
[
:as
]
&&
[
:has_many
,
:has_one
].
include?
(
reflection
.
macro
)
"
#{
join_type
}
%s ON %s.%s = %s.%s AND %s.%s = %s"
%
[
table_name_and_alias
,
connection
.
quote_table_name
(
aliased_table_name
),
"
#{
reflection
.
options
[
:as
]
}
_id"
,
connection
.
quote_table_name
(
parent
.
aliased_table_name
),
parent
.
primary_key
,
connection
.
quote_table_name
(
aliased_table_name
),
"
#{
reflection
.
options
[
:as
]
}
_type"
,
klass
.
quote_value
(
parent
.
active_record
.
base_class
.
name
)
]
else
foreign_key
=
options
[
:foreign_key
]
||
reflection
.
active_record
.
name
.
foreign_key
"
#{
join_type
}
%s ON %s.%s = %s.%s "
%
[
table_name_and_alias
,
aliased_table_name
,
foreign_key
,
parent
.
aliased_table_name
,
reflection
.
options
[
:primary_key
]
||
parent
.
primary_key
]
elsif
reflection
.
options
[
:as
]
&&
[
:has_many
,
:has_one
].
include?
(
reflection
.
macro
)
"
#{
join_type
}
%s ON %s.%s = %s.%s AND %s.%s = %s"
%
[
table_name_and_alias
,
connection
.
quote_table_name
(
aliased_table_name
),
"
#{
reflection
.
options
[
:as
]
}
_id"
,
connection
.
quote_table_name
(
parent
.
aliased_table_name
),
parent
.
primary_key
,
connection
.
quote_table_name
(
aliased_table_name
),
"
#{
reflection
.
options
[
:as
]
}
_type"
,
klass
.
quote_value
(
parent
.
active_record
.
base_class
.
name
)
]
else
foreign_key
=
options
[
:foreign_key
]
||
reflection
.
active_record
.
name
.
foreign_key
"
#{
join_type
}
%s ON %s.%s = %s.%s "
%
[
table_name_and_alias
,
aliased_table_name
,
foreign_key
,
parent
.
aliased_table_name
,
reflection
.
options
[
:primary_key
]
||
parent
.
primary_key
]
end
when
:belongs_to
"
#{
join_type
}
%s ON %s.%s = %s.%s "
%
[
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录