Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
909588d9
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,发现更多精彩内容 >>
提交
909588d9
编写于
2月 04, 2011
作者:
E
Edward Faulkner
提交者:
Santiago Pastorino
2月 04, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixing ordering of HABTM association deletion [#6191 state:resolved]
Signed-off-by:
N
Santiago Pastorino
<
santiago@wyeworks.com
>
上级
df077604
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
46 addition
and
2 deletion
+46
-2
activerecord/lib/active_record/associations.rb
activerecord/lib/active_record/associations.rb
+1
-1
activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
...associations/has_and_belongs_to_many_associations_test.rb
+1
-1
activerecord/test/cases/habtm_destroy_order_test.rb
activerecord/test/cases/habtm_destroy_order_test.rb
+17
-0
activerecord/test/models/lesson.rb
activerecord/test/models/lesson.rb
+11
-0
activerecord/test/models/student.rb
activerecord/test/models/student.rb
+3
-0
activerecord/test/schema/schema.rb
activerecord/test/schema/schema.rb
+13
-0
未找到文件。
activerecord/lib/active_record/associations.rb
浏览文件 @
909588d9
...
...
@@ -1450,8 +1450,8 @@ def has_and_belongs_to_many(association_id, options = {}, &extension)
include
Module
.
new
{
class_eval
<<-
RUBY
,
__FILE__
,
__LINE__
+
1
def destroy # def destroy
#{
reflection
.
name
}
.clear # posts.clear
super # super
#{
reflection
.
name
}
.clear # posts.clear
end # end
RUBY
}
...
...
activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb
浏览文件 @
909588d9
...
...
@@ -365,7 +365,7 @@ def test_deleting_all
def
test_removing_associations_on_destroy
david
=
DeveloperWithBeforeDestroyRaise
.
find
(
1
)
assert
!
david
.
projects
.
empty?
assert_raise
(
RuntimeError
)
{
david
.
destroy
}
david
.
destroy
assert
david
.
projects
.
empty?
assert
DeveloperWithBeforeDestroyRaise
.
connection
.
select_all
(
"SELECT * FROM developers_projects WHERE developer_id = 1"
).
empty?
end
...
...
activerecord/test/cases/habtm_destroy_order_test.rb
0 → 100644
浏览文件 @
909588d9
require
"cases/helper"
require
"models/lesson"
require
"models/student"
class
HabtmDestroyOrderTest
<
ActiveRecord
::
TestCase
test
"may not delete a lesson with students"
do
sicp
=
Lesson
.
new
(
:name
=>
"SICP"
)
ben
=
Student
.
new
(
:name
=>
"Ben Bitdiddle"
)
sicp
.
students
<<
ben
sicp
.
save!
assert_raises
LessonError
do
assert_no_difference
(
'Lesson.count'
)
do
sicp
.
destroy
end
end
end
end
activerecord/test/models/lesson.rb
0 → 100644
浏览文件 @
909588d9
class
LessonError
<
Exception
end
class
Lesson
<
ActiveRecord
::
Base
has_and_belongs_to_many
:students
before_destroy
:ensure_no_students
def
ensure_no_students
raise
LessonError
unless
students
.
empty?
end
end
activerecord/test/models/student.rb
0 → 100644
浏览文件 @
909588d9
class
Student
<
ActiveRecord
::
Base
has_and_belongs_to_many
:lessons
end
activerecord/test/schema/schema.rb
浏览文件 @
909588d9
...
...
@@ -279,6 +279,15 @@ def create_table(*args, &block)
t
.
integer
:version
,
:null
=>
false
,
:default
=>
0
end
create_table
:lessons
,
:force
=>
true
do
|
t
|
t
.
string
:name
end
create_table
:lessons_students
,
:id
=>
false
,
:force
=>
true
do
|
t
|
t
.
references
:lesson
t
.
references
:student
end
create_table
:line_items
,
:force
=>
true
do
|
t
|
t
.
integer
:invoice_id
t
.
integer
:amount
...
...
@@ -509,6 +518,10 @@ def create_table(*args, &block)
t
.
string
:sponsorable_type
end
create_table
:students
,
:force
=>
true
do
|
t
|
t
.
string
:name
end
create_table
:subscribers
,
:force
=>
true
,
:id
=>
false
do
|
t
|
t
.
string
:nick
,
:null
=>
false
t
.
string
:name
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录