Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
c717a84b
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 搜索 >>
提交
c717a84b
编写于
10月 29, 2013
作者:
C
Charlie Somerville
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #24 from github/avoid-extension-when-instantiating-extended-association
Avoid extension when instantiating extended association
上级
3b7754c9
d537304b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
2 deletion
+18
-2
activerecord/lib/active_record/associations/association_proxy.rb
...ecord/lib/active_record/associations/association_proxy.rb
+17
-2
activerecord/lib/active_record/reflection.rb
activerecord/lib/active_record/reflection.rb
+1
-0
未找到文件。
activerecord/lib/active_record/associations/association_proxy.rb
浏览文件 @
c717a84b
...
...
@@ -47,14 +47,29 @@ module Associations
# instantiation of the actual post records.
class
AssociationProxy
#:nodoc:
alias_method
:proxy_respond_to?
,
:respond_to?
alias_method
:proxy_extend
,
:extend
delegate
:to_param
,
:to
=>
:proxy_target
instance_methods
.
each
{
|
m
|
undef_method
m
unless
m
.
to_s
=~
/^(?:nil\?|send|object_id)$|^__|^respond_to_missing|proxy_/
}
def
self
.
new
(
owner
,
reflection
)
klass
=
reflection
.
cached_extend_class
||=
if
reflection
.
options
[
:extend
]
const_name
=
"AR_CACHED_EXTEND_CLASS_
#{
reflection
.
name
}
_
#{
reflection
.
options
[
:extend
].
join
(
"_"
).
gsub
(
"::"
,
"_"
)
}
"
reflection
.
active_record
.
const_set
(
const_name
,
Class
.
new
(
self
)
do
include
*
reflection
.
options
[
:extend
]
end
)
else
self
end
proxy
=
klass
.
allocate
proxy
.
send
(
:initialize
,
owner
,
reflection
)
proxy
end
def
initialize
(
owner
,
reflection
)
@owner
,
@reflection
=
owner
,
reflection
reflection
.
check_validity!
Array
(
reflection
.
options
[
:extend
]).
each
{
|
ext
|
proxy_extend
(
ext
)
}
reset
end
...
...
activerecord/lib/active_record/reflection.rb
浏览文件 @
c717a84b
...
...
@@ -77,6 +77,7 @@ def reflect_on_all_autosave_associations
# those classes. Objects of AggregateReflection and AssociationReflection are returned by the Reflection::ClassMethods.
class
MacroReflection
attr_reader
:active_record
attr_accessor
:cached_extend_class
def
initialize
(
macro
,
name
,
options
,
active_record
)
@macro
,
@name
,
@options
,
@active_record
=
macro
,
name
,
options
,
active_record
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录