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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/extend_ccc.rb +40 -10
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbcef3075caa2f3b73001245dee2692cfb971455
4
- data.tar.gz: 8ef61f78206df0b44c2a7c79e2769148eff5f7bb
3
+ metadata.gz: 4971e8f6bb3c5073421548d9d59d9ec562f670ac
4
+ data.tar.gz: c77ad432ed5c696dbf83fdfb5abd26bf8e086034
5
5
  SHA512:
6
- metadata.gz: cb1dd7ae9b010ab1e1029fea43008e9b048791652b3b023a9c7ecbae8251d34284b9fb5351978c1901d343e411db39e9a6c5d38a068248027f7acb8559bf884a
7
- data.tar.gz: 65728d6c21744ec82dd9426aeed62fbece90b1b60e6c7073bd48aab865cf2ed20ef60ec58e4ba149cb2cf6ae48817e627dbf3f36af55e4a8136ce3bb82a526c0
6
+ metadata.gz: dba3bae09285d03cc4d713c28d3280ce88876abdb3925630a4c5a94090f55b7445f1fcac54a9ff59ec57ba11559594084a90272020c8d8ecad448864a4fa9884
7
+ data.tar.gz: 6342b1178f29affee06c1a53c52b45d5548c312b1da7d1e11f3822235a7fe4f0e1e53d10e9585729f16d2d9ec95befc97f6e201928a2797f66a34a7e3c23cc15
@@ -1,22 +1,52 @@
1
1
  module CanCan
2
2
 
3
- class ControllerResource
4
- def self.add_before_filter_with_set_current_node(controller_class, method, *args)
5
- a = add_before_filter_without_set_current_node(controller_class, method, *args)
6
- controller_class.send(:before_filter, :set_current_node)
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
- class << self
10
- alias_method_chain(:add_before_filter, :set_current_node)
20
+ # 返回cancan加载的所有资源
21
+ def cancan_resources
22
+ @_cancan_resources ||= []
11
23
  end
12
24
 
25
+ end
26
+
13
27
 
14
- def initialize_with_set_resources(controller, *args)
15
- initialize_without_set_resources(controller, *args)
16
- controller.add_cancan_resource(self.name)
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(:initialize, :set_resources)
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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extend_ccc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - alfred