Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
ac1df91e
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 搜索 >>
提交
ac1df91e
编写于
1月 03, 2010
作者:
P
Pratik Naik
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement Relation#create and Relation#create!
上级
65200d29
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
1 deletion
+37
-1
activerecord/lib/active_record/relation.rb
activerecord/lib/active_record/relation.rb
+13
-1
activerecord/test/cases/relations_test.rb
activerecord/test/cases/relations_test.rb
+24
-0
未找到文件。
activerecord/lib/active_record/relation.rb
浏览文件 @
ac1df91e
...
...
@@ -16,7 +16,15 @@ def initialize(klass, relation)
end
def
new
(
*
args
,
&
block
)
@klass
.
send
(
:with_scope
,
:create
=>
create_scope
)
{
@klass
.
new
(
*
args
,
&
block
)
}
with_create_scope
{
@klass
.
new
(
*
args
,
&
block
)
}
end
def
create
(
*
args
,
&
block
)
with_create_scope
{
@klass
.
create
(
*
args
,
&
block
)
}
end
def
create!
(
*
args
,
&
block
)
with_create_scope
{
@klass
.
create!
(
*
args
,
&
block
)
}
end
def
merge
(
r
)
...
...
@@ -185,6 +193,10 @@ def method_missing(method, *args, &block)
end
end
def
with_create_scope
@klass
.
send
(
:with_scope
,
:create
=>
create_scope
)
{
yield
}
end
def
create_scope
@create_scope
||=
wheres
.
inject
({})
do
|
hash
,
where
|
hash
[
where
.
operand1
.
name
]
=
where
.
operand2
.
value
if
where
.
is_a?
(
Arel
::
Predicates
::
Equality
)
...
...
activerecord/test/cases/relations_test.rb
浏览文件 @
ac1df91e
...
...
@@ -10,6 +10,7 @@
require
'models/entrant'
require
'models/developer'
require
'models/company'
require
'models/bird'
class
RelationTest
<
ActiveRecord
::
TestCase
fixtures
:authors
,
:topics
,
:entrants
,
:developers
,
:companies
,
:developers_projects
,
:accounts
,
:categories
,
:categorizations
,
:posts
,
:comments
,
...
...
@@ -493,4 +494,27 @@ def test_scoped_build
assert_equal
'You told a lie'
,
post
.
title
end
def
test_create
birds
=
Bird
.
scoped
sparrow
=
birds
.
create
assert_kind_of
Bird
,
sparrow
assert
sparrow
.
new_record?
hen
=
birds
.
where
(
:name
=>
'hen'
).
create
assert
!
hen
.
new_record?
assert_equal
'hen'
,
hen
.
name
end
def
test_create_bang
birds
=
Bird
.
scoped
assert_raises
(
ActiveRecord
::
RecordInvalid
)
{
birds
.
create!
}
hen
=
birds
.
where
(
:name
=>
'hen'
).
create!
assert_kind_of
Bird
,
hen
assert
!
hen
.
new_record?
assert_equal
'hen'
,
hen
.
name
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录