Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
e65aff70
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,发现更多精彩内容 >>
未验证
提交
e65aff70
编写于
8月 23, 2017
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove deprecated support to passing a class to `:class_name` on associations
上级
8f5b34df
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
10 addition
and
25 deletion
+10
-25
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+4
-0
activerecord/lib/active_record/associations.rb
activerecord/lib/active_record/associations.rb
+2
-2
activerecord/lib/active_record/reflection.rb
activerecord/lib/active_record/reflection.rb
+1
-8
activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
...associations/has_and_belongs_to_many_associations_test.rb
+0
-13
activerecord/test/cases/reflection_test.rb
activerecord/test/cases/reflection_test.rb
+3
-2
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
e65aff70
*
Remove deprecated support to passing a class to
`:class_name`
on associations.
*Rafael Mendonça França*
*
Remove deprecated argument
`default`
from
`index_name_exists?`
.
*
Remove deprecated argument
`default`
from
`index_name_exists?`
.
*Rafael Mendonça França*
*Rafael Mendonça França*
...
...
activerecord/lib/active_record/associations.rb
浏览文件 @
e65aff70
...
@@ -1848,7 +1848,7 @@ def has_and_belongs_to_many(name, scope = nil, **options, &extension)
...
@@ -1848,7 +1848,7 @@ def has_and_belongs_to_many(name, scope = nil, **options, &extension)
builder
=
Builder
::
HasAndBelongsToMany
.
new
name
,
self
,
options
builder
=
Builder
::
HasAndBelongsToMany
.
new
name
,
self
,
options
join_model
=
ActiveSupport
::
Deprecation
.
silence
{
builder
.
through_model
}
join_model
=
builder
.
through_model
const_set
join_model
.
name
,
join_model
const_set
join_model
.
name
,
join_model
private_constant
join_model
.
name
private_constant
join_model
.
name
...
@@ -1877,7 +1877,7 @@ def destroy_associations
...
@@ -1877,7 +1877,7 @@ def destroy_associations
hm_options
[
k
]
=
options
[
k
]
if
options
.
key?
k
hm_options
[
k
]
=
options
[
k
]
if
options
.
key?
k
end
end
ActiveSupport
::
Deprecation
.
silence
{
has_many
name
,
scope
,
hm_options
,
&
extension
}
has_many
name
,
scope
,
hm_options
,
&
extension
_reflections
[
name
.
to_s
].
parent_reflection
=
habtm_reflection
_reflections
[
name
.
to_s
].
parent_reflection
=
habtm_reflection
end
end
end
end
...
...
activerecord/lib/active_record/reflection.rb
浏览文件 @
e65aff70
...
@@ -431,14 +431,7 @@ def initialize(name, scope, options, active_record)
...
@@ -431,14 +431,7 @@ def initialize(name, scope, options, active_record)
@association_scope_cache
=
Concurrent
::
Map
.
new
@association_scope_cache
=
Concurrent
::
Map
.
new
if
options
[
:class_name
]
&&
options
[
:class_name
].
class
==
Class
if
options
[
:class_name
]
&&
options
[
:class_name
].
class
==
Class
ActiveSupport
::
Deprecation
.
warn
(
<<-
MSG
.
squish
)
raise
ArgumentError
,
"A class was passed to `:class_name` but we are expecting a string."
Passing a class to the `class_name` is deprecated and will raise
an ArgumentError in Rails 5.2. It eagerloads more classes than
necessary and potentially creates circular dependencies.
Please pass the class name as a string:
`
#{
macro
}
:
#{
name
}
, class_name: '
#{
options
[
:class_name
]
}
'`
MSG
end
end
end
end
...
...
activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
浏览文件 @
e65aff70
...
@@ -88,12 +88,6 @@ class DeveloperWithSymbolClassName < Developer
...
@@ -88,12 +88,6 @@ class DeveloperWithSymbolClassName < Developer
has_and_belongs_to_many
:projects
,
class_name: :ProjectWithSymbolsForKeys
has_and_belongs_to_many
:projects
,
class_name: :ProjectWithSymbolsForKeys
end
end
ActiveSupport
::
Deprecation
.
silence
do
class
DeveloperWithConstantClassName
<
Developer
has_and_belongs_to_many
:projects
,
class_name:
ProjectWithSymbolsForKeys
end
end
class
DeveloperWithExtendOption
<
Developer
class
DeveloperWithExtendOption
<
Developer
module
NamedExtension
module
NamedExtension
def
category
def
category
...
@@ -954,13 +948,6 @@ def test_with_symbol_class_name
...
@@ -954,13 +948,6 @@ def test_with_symbol_class_name
end
end
end
end
def
test_with_constant_class_name
assert_nothing_raised
do
developer
=
DeveloperWithConstantClassName
.
new
developer
.
projects
end
end
def
test_alternate_database
def
test_alternate_database
professor
=
Professor
.
create
(
name:
"Plum"
)
professor
=
Professor
.
create
(
name:
"Plum"
)
course
=
Course
.
create
(
name:
"Forensics"
)
course
=
Course
.
create
(
name:
"Forensics"
)
...
...
activerecord/test/cases/reflection_test.rb
浏览文件 @
e65aff70
...
@@ -432,9 +432,10 @@ def test_symbol_for_class_name
...
@@ -432,9 +432,10 @@ def test_symbol_for_class_name
end
end
def
test_class_for_class_name
def
test_class_for_class_name
assert_deprecated
do
error
=
assert_raises
(
ArgumentError
)
do
assert_predicate
ActiveRecord
::
Reflection
.
create
(
:has_many
,
:clients
,
nil
,
{
class_name:
Client
},
Firm
),
:validate?
ActiveRecord
::
Reflection
.
create
(
:has_many
,
:clients
,
nil
,
{
class_name:
Client
},
Firm
)
end
end
assert_equal
"A class was passed to `:class_name` but we are expecting a string."
,
error
.
message
end
end
def
test_join_table
def
test_join_table
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录