Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
cancan
提交
ff13a82d
C
cancan
项目概览
CoCo_Code_Op2
/
cancan
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cancan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff13a82d
编写于
5月 02, 2011
作者:
R
Ryan Bates
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #355 from emmanuel/issue/245.
DataMapper adapter improvements
上级
a6af47d2
16bdb8d4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
11 addition
and
13 deletion
+11
-13
lib/cancan/model_adapters/data_mapper_adapter.rb
lib/cancan/model_adapters/data_mapper_adapter.rb
+11
-12
spec/cancan/model_adapters/data_mapper_adapter_spec.rb
spec/cancan/model_adapters/data_mapper_adapter_spec.rb
+0
-1
未找到文件。
lib/cancan/model_adapters/data_mapper_adapter.rb
浏览文件 @
ff13a82d
...
...
@@ -10,23 +10,22 @@ module CanCan
end
def
self
.
matches_conditions_hash?
(
subject
,
conditions
)
subject
.
class
.
all
(
:conditions
=>
conditions
).
include?
(
subject
)
# TODO don't use a database query here for performance and other instances
collection
=
DataMapper
::
Collection
.
new
(
subject
.
query
,
[
subject
])
!!
collection
.
first
(
conditions
)
end
def
database_records
scope
=
@model_class
.
all
(
:conditions
=>
[
"0=1"
])
conditions
.
each
do
|
condition
|
scope
+=
@model_class
.
all
(
:conditions
=>
condition
)
end
scope
=
@model_class
.
all
(
:conditions
=>
[
"0 = 1"
])
cans
,
cannots
=
@rules
.
partition
{
|
r
|
r
.
base_behavior
}
return
scope
if
cans
.
empty?
# apply unions first, then differences. this mean cannot overrides can
cans
.
each
{
|
r
|
scope
+=
@model_class
.
all
(
:conditions
=>
r
.
conditions
)
}
cannots
.
each
{
|
r
|
scope
-=
@model_class
.
all
(
:conditions
=>
r
.
conditions
)
}
scope
end
def
conditions
@rules
.
map
(
&
:conditions
)
end
end
end
end
end
# class DataMapper
end
# module ModelAdapters
end
# module CanCan
DataMapper
::
Model
.
class_eval
do
include
CanCan
::
ModelAdditions
::
ClassMethods
...
...
spec/cancan/model_adapters/data_mapper_adapter_spec.rb
浏览文件 @
ff13a82d
...
...
@@ -65,7 +65,6 @@ if ENV["MODEL_ADAPTER"] == "data_mapper"
end
it
"should fetch only the articles that are published and not secret"
do
pending
"the `cannot` may require some custom SQL, maybe abstract out from Active Record adapter"
@ability
.
can
:read
,
Article
,
:published
=>
true
@ability
.
cannot
:read
,
Article
,
:secret
=>
true
article1
=
Article
.
create
(
:published
=>
true
,
:secret
=>
false
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录