extend_ccc 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/extend_ccc.rb +40 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4971e8f6bb3c5073421548d9d59d9ec562f670ac
|
4
|
+
data.tar.gz: c77ad432ed5c696dbf83fdfb5abd26bf8e086034
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dba3bae09285d03cc4d713c28d3280ce88876abdb3925630a4c5a94090f55b7445f1fcac54a9ff59ec57ba11559594084a90272020c8d8ecad448864a4fa9884
|
7
|
+
data.tar.gz: 6342b1178f29affee06c1a53c52b45d5548c312b1da7d1e11f3822235a7fe4f0e1e53d10e9585729f16d2d9ec95befc97f6e201928a2797f66a34a7e3c23cc15
|
data/lib/extend_ccc.rb
CHANGED
@@ -1,22 +1,52 @@
|
|
1
1
|
module CanCan
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
module ControllerAdditions
|
4
|
+
|
5
|
+
module ClassMethods
|
6
|
+
# 为ActionController::Base设置处理cancan加载资源的处理方法
|
7
|
+
def after_loaded_cancan_resource(*args, &block)
|
8
|
+
@@_cancan_resource_processors ||= []
|
9
|
+
@@_cancan_resource_processors << args
|
10
|
+
@@_cancan_resource_processors << block if block
|
11
|
+
@@_cancan_resource_processors.flatten!
|
12
|
+
end
|
13
|
+
|
14
|
+
# 返回处理cancan被加载资源的处理方法
|
15
|
+
def loaded_cancan_resources
|
16
|
+
@@_cancan_resource_processors ||= []
|
17
|
+
end
|
7
18
|
end
|
8
19
|
|
9
|
-
|
10
|
-
|
20
|
+
# 返回cancan加载的所有资源
|
21
|
+
def cancan_resources
|
22
|
+
@_cancan_resources ||= []
|
11
23
|
end
|
12
24
|
|
25
|
+
end
|
26
|
+
|
13
27
|
|
14
|
-
|
15
|
-
|
16
|
-
|
28
|
+
|
29
|
+
class ControllerResource
|
30
|
+
|
31
|
+
# cancan加载资源后,对该资源进行相关的处理,由扩展的ActionController::Base#after_loaded_cancan_resource设置
|
32
|
+
def load_resource_with_handle
|
33
|
+
current_ability
|
34
|
+
load_resource_without_handle
|
35
|
+
load_resource_callback if self.resource_instance
|
17
36
|
end
|
18
|
-
alias_method_chain(:
|
37
|
+
alias_method_chain(:load_resource, :handle)
|
19
38
|
|
39
|
+
# 扩展的处理加载资源的回调方法调用
|
40
|
+
def load_resource_callback
|
41
|
+
@controller.cancan_resources << self.resource_instance
|
42
|
+
@controller.class.loaded_cancan_resources.each do |processor|
|
43
|
+
if processor.is_a?(Proc)
|
44
|
+
@controller.instance_eval { processor.call(self.resource_instance) }
|
45
|
+
else
|
46
|
+
@controller.send(processor, self.resource_instance)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
20
50
|
|
21
51
|
end
|
22
52
|
|