Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
9cdcfb4f
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,发现更多精彩内容 >>
提交
9cdcfb4f
编写于
7月 30, 2009
作者:
J
Joshua Peek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ditto for id=
上级
831c38ff
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
4 addition
and
8 deletion
+4
-8
activerecord/lib/active_record/attribute_methods.rb
activerecord/lib/active_record/attribute_methods.rb
+3
-3
activerecord/lib/active_record/attribute_methods/write.rb
activerecord/lib/active_record/attribute_methods/write.rb
+1
-5
未找到文件。
activerecord/lib/active_record/attribute_methods.rb
浏览文件 @
9cdcfb4f
...
...
@@ -89,7 +89,7 @@ def undefine_attribute_methods
# method is defined by Active Record though.
def
instance_method_already_implemented?
(
method_name
)
method_name
=
method_name
.
to_s
return
true
if
method_name
=
~
/^id(=$|\?$|$)/
return
true
if
method_name
=
=
"id"
@_defined_class_methods
||=
ancestors
.
first
(
ancestors
.
index
(
ActiveRecord
::
Base
)).
sum
([])
{
|
m
|
m
.
public_instance_methods
(
false
)
|
m
.
private_instance_methods
(
false
)
|
m
.
protected_instance_methods
(
false
)
}.
map
{
|
m
|
m
.
to_s
}.
to_set
@@_defined_activerecord_methods
||=
(
ActiveRecord
::
Base
.
public_instance_methods
(
false
)
|
ActiveRecord
::
Base
.
private_instance_methods
(
false
)
|
ActiveRecord
::
Base
.
protected_instance_methods
(
false
)).
map
{
|
m
|
m
.
to_s
}.
to_set
raise
DangerousAttributeError
,
"
#{
method_name
}
is defined by ActiveRecord"
if
@@_defined_activerecord_methods
.
include?
(
method_name
)
...
...
@@ -152,7 +152,7 @@ def method_missing(method_id, *args, &block)
id
elsif
md
=
self
.
class
.
match_attribute_method?
(
method_name
)
attribute_name
,
method_type
=
md
.
pre_match
,
md
.
to_s
if
@attributes
.
include?
(
attribute_name
)
if
attribute_name
==
'id'
||
@attributes
.
include?
(
attribute_name
)
__send__
(
"attribute
#{
method_type
}
"
,
attribute_name
,
*
args
,
&
block
)
else
super
...
...
@@ -182,7 +182,7 @@ def respond_to?(method, include_private_methods = false)
end
if
md
=
self
.
class
.
match_attribute_method?
(
method_name
)
return
true
if
@attributes
.
include?
(
md
.
pre_match
)
return
true
if
md
.
pre_match
==
'id'
||
@attributes
.
include?
(
md
.
pre_match
)
end
super
end
...
...
activerecord/lib/active_record/attribute_methods/write.rb
浏览文件 @
9cdcfb4f
...
...
@@ -18,6 +18,7 @@ def define_attribute_method=(attr_name)
# columns are turned into +nil+.
def
write_attribute
(
attr_name
,
value
)
attr_name
=
attr_name
.
to_s
attr_name
=
self
.
class
.
primary_key
if
attr_name
==
'id'
@attributes_cache
.
delete
(
attr_name
)
if
(
column
=
column_for_attribute
(
attr_name
))
&&
column
.
number?
@attributes
[
attr_name
]
=
convert_number_column_value
(
value
)
...
...
@@ -26,11 +27,6 @@ def write_attribute(attr_name, value)
end
end
# Sets the primary ID.
def
id
=
(
value
)
write_attribute
(
self
.
class
.
primary_key
,
value
)
end
private
# Handle *= for method_missing.
def
attribute
=
(
attribute_name
,
value
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录