Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
1841fd54
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,发现更多精彩内容 >>
提交
1841fd54
编写于
7月 30, 2009
作者:
J
Joshua Peek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move id attribute methods into their related concern
上级
3e58f8e1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
28 addition
and
29 deletion
+28
-29
activerecord/lib/active_record/attribute_methods/before_type_cast.rb
...d/lib/active_record/attribute_methods/before_type_cast.rb
+12
-0
activerecord/lib/active_record/attribute_methods/read.rb
activerecord/lib/active_record/attribute_methods/read.rb
+11
-0
activerecord/lib/active_record/attribute_methods/write.rb
activerecord/lib/active_record/attribute_methods/write.rb
+5
-0
activerecord/lib/active_record/base.rb
activerecord/lib/active_record/base.rb
+0
-29
未找到文件。
activerecord/lib/active_record/attribute_methods/before_type_cast.rb
浏览文件 @
1841fd54
...
...
@@ -11,6 +11,18 @@ def read_attribute_before_type_cast(attr_name)
@attributes
[
attr_name
]
end
# Returns a hash of attributes before typecasting and deserialization.
def
attributes_before_type_cast
self
.
attribute_names
.
inject
({})
do
|
attrs
,
name
|
attrs
[
name
]
=
read_attribute_before_type_cast
(
name
)
attrs
end
end
def
id_before_type_cast
#:nodoc:
read_attribute_before_type_cast
(
self
.
class
.
primary_key
)
end
private
# Handle *_before_type_cast for method_missing.
def
attribute_before_type_cast
(
attribute_name
)
...
...
activerecord/lib/active_record/attribute_methods/read.rb
浏览文件 @
1841fd54
...
...
@@ -77,6 +77,17 @@ def read_attribute(attr_name)
end
end
# A model instance's primary key is always available as model.id
# whether you name it the default 'id' or set it to something else.
def
id
attr_name
=
self
.
class
.
primary_key
column
=
column_for_attribute
(
attr_name
)
self
.
class
.
send
(
:define_read_method
,
:id
,
attr_name
,
column
)
# now that the method exists, call it
self
.
send
attr_name
.
to_sym
end
# Returns true if the attribute is of a text column and marked for serialization.
def
unserializable_attribute?
(
attr_name
,
column
)
column
.
text?
&&
self
.
class
.
serialized_attributes
[
attr_name
]
...
...
activerecord/lib/active_record/attribute_methods/write.rb
浏览文件 @
1841fd54
...
...
@@ -26,6 +26,11 @@ 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
)
...
...
activerecord/lib/active_record/base.rb
浏览文件 @
1841fd54
...
...
@@ -2508,18 +2508,6 @@ def initialize(attributes = nil)
result
end
# A model instance's primary key is always available as model.id
# whether you name it the default 'id' or set it to something else.
def
id
attr_name
=
self
.
class
.
primary_key
column
=
column_for_attribute
(
attr_name
)
self
.
class
.
send
(
:define_read_method
,
:id
,
attr_name
,
column
)
# now that the method exists, call it
self
.
send
attr_name
.
to_sym
end
# Returns a String, which Action Pack uses for constructing an URL to this
# object. The default implementation returns this record's id as a String,
# or nil if this record's unsaved.
...
...
@@ -2565,19 +2553,10 @@ def cache_key
end
end
def
id_before_type_cast
#:nodoc:
read_attribute_before_type_cast
(
self
.
class
.
primary_key
)
end
def
quoted_id
#:nodoc:
quote_value
(
id
,
column_for_attribute
(
self
.
class
.
primary_key
))
end
# Sets the primary ID.
def
id
=
(
value
)
write_attribute
(
self
.
class
.
primary_key
,
value
)
end
# Returns true if this object hasn't been saved yet -- that is, a record for the object doesn't exist yet; otherwise, returns false.
def
new_record?
@new_record
||
false
...
...
@@ -2822,14 +2801,6 @@ def attributes
end
end
# Returns a hash of attributes before typecasting and deserialization.
def
attributes_before_type_cast
self
.
attribute_names
.
inject
({})
do
|
attrs
,
name
|
attrs
[
name
]
=
read_attribute_before_type_cast
(
name
)
attrs
end
end
# Returns an <tt>#inspect</tt>-like string for the value of the
# attribute +attr_name+. String attributes are elided after 50
# characters, and Date and Time attributes are returned in the
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录