Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
75beb6c7
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,发现更多精彩内容 >>
提交
75beb6c7
编写于
10月 02, 2013
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
push constructable? on to the reflection
上级
5d8b7760
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
22 addition
and
18 deletion
+22
-18
activerecord/lib/active_record/associations/builder/association.rb
...ord/lib/active_record/associations/builder/association.rb
+2
-2
activerecord/lib/active_record/associations/builder/belongs_to.rb
...cord/lib/active_record/associations/builder/belongs_to.rb
+2
-6
activerecord/lib/active_record/associations/builder/has_one.rb
...erecord/lib/active_record/associations/builder/has_one.rb
+0
-4
activerecord/lib/active_record/associations/builder/singular_association.rb
...ctive_record/associations/builder/singular_association.rb
+2
-6
activerecord/lib/active_record/reflection.rb
activerecord/lib/active_record/reflection.rb
+16
-0
未找到文件。
activerecord/lib/active_record/associations/builder/association.rb
浏览文件 @
75beb6c7
...
...
@@ -31,7 +31,7 @@ def self.build(model, name, scope, options, &block)
builder
=
new
(
name
,
scope
,
options
,
&
block
)
reflection
=
builder
.
build
(
model
)
builder
.
define_accessors
model
builder
.
define_accessors
model
,
reflection
builder
.
define_callbacks
model
,
reflection
builder
.
define_extensions
model
reflection
...
...
@@ -82,7 +82,7 @@ def define_callbacks(model, reflection)
#
# Post.first.comments and Post.first.comments= methods are defined by this method...
def
define_accessors
(
model
)
def
define_accessors
(
model
,
reflection
)
mixin
=
model
.
generated_feature_methods
define_readers
(
mixin
)
define_writers
(
mixin
)
...
...
activerecord/lib/active_record/associations/builder/belongs_to.rb
浏览文件 @
75beb6c7
...
...
@@ -8,10 +8,6 @@ def valid_options
super
+
[
:foreign_type
,
:polymorphic
,
:touch
]
end
def
constructable?
!
options
[
:polymorphic
]
end
def
valid_dependent_options
[
:destroy
,
:delete
]
end
...
...
@@ -22,7 +18,7 @@ def define_callbacks(model, reflection)
add_touch_callbacks
(
model
,
reflection
)
if
options
[
:touch
]
end
def
define_accessors
(
mixin
)
def
define_accessors
(
mixin
,
reflection
)
super
add_counter_cache_methods
mixin
end
...
...
@@ -58,7 +54,7 @@ def belongs_to_counter_cache_after_update(association, reflection)
if
(
@_after_create_counter_called
||=
false
)
@_after_create_counter_called
=
false
elsif
attribute_changed?
(
foreign_key
)
&&
!
new_record?
&&
associa
tion
.
constructable?
elsif
attribute_changed?
(
foreign_key
)
&&
!
new_record?
&&
reflec
tion
.
constructable?
model
=
reflection
.
klass
foreign_key_was
=
attribute_was
foreign_key
foreign_key
=
attribute
foreign_key
...
...
activerecord/lib/active_record/associations/builder/has_one.rb
浏览文件 @
75beb6c7
...
...
@@ -10,10 +10,6 @@ def valid_options
valid
end
def
constructable?
!
options
[
:through
]
end
def
valid_dependent_options
[
:destroy
,
:delete
,
:nullify
,
:restrict_with_error
,
:restrict_with_exception
]
end
...
...
activerecord/lib/active_record/associations/builder/singular_association.rb
浏览文件 @
75beb6c7
...
...
@@ -6,13 +6,9 @@ def valid_options
super
+
[
:remote
,
:dependent
,
:counter_cache
,
:primary_key
,
:inverse_of
]
end
def
constructable?
true
end
def
define_accessors
(
model
)
def
define_accessors
(
model
,
reflection
)
super
define_constructors
(
model
.
generated_feature_methods
)
if
constructable?
define_constructors
(
model
.
generated_feature_methods
)
if
reflection
.
constructable?
end
# Defines the (build|create)_association methods for belongs_to or has_one association
...
...
activerecord/lib/active_record/reflection.rb
浏览文件 @
75beb6c7
...
...
@@ -200,6 +200,7 @@ def initialize(macro, name, scope, options, active_record)
@automatic_inverse_of
=
nil
@type
=
options
[
:as
]
&&
"
#{
options
[
:as
]
}
_type"
@foreign_type
=
options
[
:foreign_type
]
||
"
#{
name
}
_type"
@constructable
=
calculate_constructable
(
macro
,
options
)
end
# Returns a new, unsaved instance of the associated class. +attributes+ will
...
...
@@ -208,6 +209,10 @@ def build_association(attributes, &block)
klass
.
new
(
attributes
,
&
block
)
end
def
constructable?
# :nodoc:
@constructable
end
def
table_name
klass
.
table_name
end
...
...
@@ -379,6 +384,17 @@ def actual_source_reflection # FIXME: this is a horrible name
end
private
def
calculate_constructable
(
macro
,
options
)
case
macro
when
:belongs_to
!
options
[
:polymorphic
]
when
:has_one
!
options
[
:through
]
else
true
end
end
# Attempts to find the inverse association name automatically.
# If it cannot find a suitable inverse association name, it returns
# nil.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录