Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
47134a04
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,发现更多精彩内容 >>
提交
47134a04
编写于
6月 25, 2010
作者:
S
Santiago Pastorino
提交者:
José Valim
6月 26, 2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
blocks removed from all the ActiveRelation query_methods, extend method added instead
Signed-off-by:
N
José Valim
<
jose.valim@gmail.com
>
上级
026cec33
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
14 addition
and
9 deletion
+14
-9
activerecord/lib/active_record/relation.rb
activerecord/lib/active_record/relation.rb
+9
-0
activerecord/lib/active_record/relation/query_methods.rb
activerecord/lib/active_record/relation/query_methods.rb
+4
-8
activerecord/test/cases/relations_test.rb
activerecord/test/cases/relations_test.rb
+1
-1
未找到文件。
activerecord/lib/active_record/relation.rb
浏览文件 @
47134a04
...
@@ -328,6 +328,15 @@ def inspect
...
@@ -328,6 +328,15 @@ def inspect
to_a
.
inspect
to_a
.
inspect
end
end
def
extend
(
*
args
,
&
block
)
if
block_given?
apply_modules
Module
.
new
(
&
block
)
self
else
super
end
end
protected
protected
def
method_missing
(
method
,
*
args
,
&
block
)
def
method_missing
(
method
,
*
args
,
&
block
)
...
...
activerecord/lib/active_record/relation/query_methods.rb
浏览文件 @
47134a04
...
@@ -11,9 +11,8 @@ module QueryMethods
...
@@ -11,9 +11,8 @@ module QueryMethods
next
if
[
:where
,
:having
,
:select
].
include?
(
query_method
)
next
if
[
:where
,
:having
,
:select
].
include?
(
query_method
)
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
def
#{
query_method
}
(*args
, &block
)
def
#{
query_method
}
(*args)
new_relation = clone
new_relation = clone
new_relation.send(:apply_modules, Module.new(&block)) if block_given?
value = Array.wrap(args.flatten).reject {|x| x.blank? }
value = Array.wrap(args.flatten).reject {|x| x.blank? }
new_relation.
#{
query_method
}
_values += value if value.present?
new_relation.
#{
query_method
}
_values += value if value.present?
new_relation
new_relation
...
@@ -21,9 +20,8 @@ def #{query_method}(*args, &block)
...
@@ -21,9 +20,8 @@ def #{query_method}(*args, &block)
CEVAL
CEVAL
end
end
def
reorder
(
*
args
,
&
block
)
def
reorder
(
*
args
)
new_relation
=
clone
new_relation
=
clone
new_relation
.
send
(
:apply_modules
,
Module
.
new
(
&
block
))
if
block_given?
value
=
Array
.
wrap
(
args
.
flatten
).
reject
{
|
x
|
x
.
blank?
}
value
=
Array
.
wrap
(
args
.
flatten
).
reject
{
|
x
|
x
.
blank?
}
new_relation
.
order_values
=
value
if
value
.
present?
new_relation
.
order_values
=
value
if
value
.
present?
new_relation
new_relation
...
@@ -42,9 +40,8 @@ def select(*args)
...
@@ -42,9 +40,8 @@ def select(*args)
[
:where
,
:having
].
each
do
|
query_method
|
[
:where
,
:having
].
each
do
|
query_method
|
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
def
#{
query_method
}
(*args
, &block
)
def
#{
query_method
}
(*args)
new_relation = clone
new_relation = clone
new_relation.send(:apply_modules, Module.new(&block)) if block_given?
value = build_where(*args)
value = build_where(*args)
new_relation.
#{
query_method
}
_values += Array.wrap(value) if value.present?
new_relation.
#{
query_method
}
_values += Array.wrap(value) if value.present?
new_relation
new_relation
...
@@ -56,9 +53,8 @@ def #{query_method}(*args, &block)
...
@@ -56,9 +53,8 @@ def #{query_method}(*args, &block)
attr_accessor
:"
#{
query_method
}
_value"
attr_accessor
:"
#{
query_method
}
_value"
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
class_eval
<<-
CEVAL
,
__FILE__
,
__LINE__
+
1
def
#{
query_method
}
(value = true
, &block
)
def
#{
query_method
}
(value = true)
new_relation = clone
new_relation = clone
new_relation.send(:apply_modules, Module.new(&block)) if block_given?
new_relation.
#{
query_method
}
_value = value
new_relation.
#{
query_method
}
_value = value
new_relation
new_relation
end
end
...
...
activerecord/test/cases/relations_test.rb
浏览文件 @
47134a04
...
@@ -618,7 +618,7 @@ def test_except
...
@@ -618,7 +618,7 @@ def test_except
end
end
def
test_anonymous_extension
def
test_anonymous_extension
relation
=
Post
.
where
(
:author_id
=>
1
).
order
(
'id ASC'
)
do
relation
=
Post
.
where
(
:author_id
=>
1
).
order
(
'id ASC'
)
.
extend
do
def
author
def
author
'lifo'
'lifo'
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录