Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
79bcab79
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,发现更多精彩内容 >>
提交
79bcab79
编写于
8月 20, 2014
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #16172 from Agis-/hmt_scope_arity
has_many :through with dynamic condition merging
上级
b66bb42d
431f8e01
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
29 addition
and
1 deletion
+29
-1
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+7
-0
activerecord/lib/active_record/associations/through_association.rb
...ord/lib/active_record/associations/through_association.rb
+5
-1
activerecord/test/cases/relation/merging_test.rb
activerecord/test/cases/relation/merging_test.rb
+13
-0
activerecord/test/models/comment.rb
activerecord/test/models/comment.rb
+1
-0
activerecord/test/models/developer.rb
activerecord/test/models/developer.rb
+2
-0
activerecord/test/schema/schema.rb
activerecord/test/schema/schema.rb
+1
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
79bcab79
*
Fix has_many :through relation merging failing when dynamic conditions are
passed as a lambda with an arity of one.
Fixes #16128
*Agis Anastasopoulos*
*
Fixed the
`Relation#exists?`
to work with polymorphic associations.
Fixes #15821.
...
...
activerecord/lib/active_record/associations/through_association.rb
浏览文件 @
79bcab79
...
...
@@ -15,7 +15,11 @@ def target_scope
scope
=
super
reflection
.
chain
.
drop
(
1
).
each
do
|
reflection
|
relation
=
reflection
.
klass
.
all
relation
.
merge!
(
reflection
.
scope
)
if
reflection
.
scope
reflection_scope
=
reflection
.
scope
if
reflection_scope
&&
reflection_scope
.
arity
.
zero?
relation
.
merge!
(
reflection_scope
)
end
scope
.
merge!
(
relation
.
except
(
:select
,
:create_with
,
:includes
,
:preload
,
:joins
,
:eager_load
)
...
...
activerecord/test/cases/relation/merging_test.rb
浏览文件 @
79bcab79
...
...
@@ -4,6 +4,7 @@
require
'models/developer'
require
'models/post'
require
'models/project'
require
'models/rating'
class
RelationMergingTest
<
ActiveRecord
::
TestCase
fixtures
:developers
,
:comments
,
:authors
,
:posts
...
...
@@ -144,4 +145,16 @@ class MergingDifferentRelationsTest < ActiveRecord::TestCase
assert_equal
[
"Mary"
,
"Mary"
,
"Mary"
,
"David"
],
posts_by_author_name
end
test
"relation merging (using a proc argument)"
do
dev
=
Developer
.
where
(
name:
"Jamis"
).
first
comment_1
=
dev
.
comments
.
create!
(
body:
"I'm Jamis"
,
post:
Post
.
first
)
rating_1
=
comment_1
.
ratings
.
create!
comment_2
=
dev
.
comments
.
create!
(
body:
"I'm John"
,
post:
Post
.
first
)
rating_2
=
comment_2
.
ratings
.
create!
assert_equal
dev
.
ratings
,
[
rating_1
]
end
end
activerecord/test/models/comment.rb
浏览文件 @
79bcab79
...
...
@@ -9,6 +9,7 @@ class Comment < ActiveRecord::Base
belongs_to
:post
,
:counter_cache
=>
true
belongs_to
:author
,
polymorphic:
true
belongs_to
:resource
,
polymorphic:
true
belongs_to
:developer
has_many
:ratings
...
...
activerecord/test/models/developer.rb
浏览文件 @
79bcab79
...
...
@@ -46,6 +46,8 @@ def find_least_recent
has_many
:audit_logs
has_many
:contracts
has_many
:firms
,
:through
=>
:contracts
,
:source
=>
:firm
has_many
:comments
,
->
(
developer
)
{
where
(
body:
"I'm
#{
developer
.
name
}
"
)
}
has_many
:ratings
,
through: :comments
scope
:jamises
,
->
{
where
(
:name
=>
'Jamis'
)
}
...
...
activerecord/test/schema/schema.rb
浏览文件 @
79bcab79
...
...
@@ -198,6 +198,7 @@ def except(adapter_names_to_exclude)
t
.
references
:author
,
polymorphic:
true
t
.
string
:resource_id
t
.
string
:resource_type
t
.
integer
:developer_id
end
create_table
:companies
,
force:
true
do
|
t
|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录