can_field 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1b89dc41395d35a446fe3964f7f228509f557d2d
4
+ data.tar.gz: adf57e793960f7392edbe581cdb6e3e9b65e38a2
5
+ SHA512:
6
+ metadata.gz: 01f2293f8cce9db2a21baab92268455a913b8ae4525c4d6b3bde967dcd98dc91102122f76f81420be8db2b5f2fa8e851ddd65b4744bc004d9f307d32a752e801
7
+ data.tar.gz: 2311a8e7d56c810bfa745df33e50a48363ae12b82d722bde7bdc792cebf2fe06c4fca1a7d974f028c380dc88c521806d4d76e0ea468b86fbfc9bab5cc8917324
@@ -1,3 +1,7 @@
1
+ ## v0.0.3
2
+
3
+ * add support for options hashes and blocks to canf method
4
+
1
5
  ## v0.0.2
2
6
 
3
7
  * fix dependencies to support travis-ci.org
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # CanField [![Gem Version](https://badge.fury.io/rb/can_field.png)](http://badge.fury.io/rb/can_field) [![Build Status](https://api.travis-ci.org/ffloyd/can_field.png)](https://travis-ci.org/ffloyd/can_field)
1
+ # CanField [![Gem Version](https://badge.fury.io/rb/can_field.png)](http://badge.fury.io/rb/can_field) [![Dependency Status](https://gemnasium.com/ffloyd/can_field.png)](https://gemnasium.com/ffloyd/can_field) [![Build Status](https://travis-ci.org/ffloyd/can_field.png)](https://travis-ci.org/ffloyd/can_field) [![endorse](http://api.coderwall.com/ffloyd/endorsecount.png)](http://coderwall.com/ffloyd)
2
2
 
3
3
  [CanCan](https://github.com/ryanb/cancan) provides only model-level permissions. This gem adds field-based permissions to CanCan using [strong_parameters gem](https://github.com/rails/strong_parameters).
4
4
 
@@ -2,7 +2,7 @@ module CanField
2
2
  module CanCan
3
3
  module AbilityAdditions
4
4
  # see README.md
5
- def canf(actions, target, fields)
5
+ def canf(actions, target, fields, opt_hash = nil, &block)
6
6
  unless actions.is_a? Array
7
7
  actions = [actions]
8
8
  end
@@ -12,12 +12,12 @@ module CanField
12
12
  end
13
13
 
14
14
  actions.each do |action|
15
- can action.to_sym, target
15
+ can action.to_sym, target, opt_hash, &block
16
16
  end
17
17
 
18
18
  actions.product(fields).each do |x|
19
19
  action, field = x
20
- can "_cf_#{action}_fl_#{field}".to_sym, target
20
+ can "_cf_#{action}_fl_#{field}".to_sym, target, opt_hash, &block
21
21
  end
22
22
  end
23
23
 
@@ -1,3 +1,3 @@
1
1
  module CanField
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -2,6 +2,8 @@ require "spec_helper"
2
2
 
3
3
  class Book
4
4
  include ActiveAttr::Model
5
+
6
+ attr_accessor :state, :description
5
7
  end
6
8
 
7
9
  class Shelf
@@ -14,6 +16,12 @@ class Ability
14
16
  def initialize
15
17
  canf :update, Book, :title
16
18
 
19
+ canf :update, Book, :author, state: 'unpublished'
20
+
21
+ canf :update, Book, :description do |book|
22
+ book.state == 'unpublished'
23
+ end
24
+
17
25
  canf [:create, :update], Shelf, [:name, :position]
18
26
  end
19
27
  end
@@ -21,7 +29,7 @@ end
21
29
  describe "CanField::CanCan" do
22
30
  describe "::AbilityAdditions" do
23
31
  subject{ ability }
24
- let(:ability) {Ability.new}
32
+ let(:ability) {Ability.new()}
25
33
 
26
34
  describe "#canf" do
27
35
  it { should be_able_to(:_cf_update_fl_title, Book.new) }
@@ -38,6 +46,12 @@ describe "CanField::CanCan" do
38
46
  it { should be_able_to(:update, Shelf.new)}
39
47
  it { should be_able_to(:create, Shelf.new)}
40
48
  it { should_not be_able_to(:read, Shelf.new)}
49
+
50
+ it { should be_able_to(:_cf_update_fl_author, Book.new(state: 'unpublished')) }
51
+ it { should_not be_able_to(:_cf_update_fl_author, Book.new) }
52
+
53
+ it { should be_able_to(:_cf_update_fl_description, Book.new(state: 'unpublished')) }
54
+ it { should_not be_able_to(:_cf_update_fl_description, Book.new) }
41
55
  end
42
56
  end
43
57
  end
metadata CHANGED
@@ -1,52 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: can_field
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Roman Kolesnev
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
11
+ date: 2013-03-10 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: cancan
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: strong_parameters
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rails
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - <
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - <
60
53
  - !ruby/object:Gem::Version
@@ -62,65 +55,57 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: bundler
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 1.2.3
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: 1.2.3
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rake
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: active_attr
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  description: CanCan constraints for fields using strong_parameters
@@ -149,33 +134,26 @@ files:
149
134
  homepage: ''
150
135
  licenses:
151
136
  - MIT
137
+ metadata: {}
152
138
  post_install_message:
153
139
  rdoc_options: []
154
140
  require_paths:
155
141
  - lib
156
142
  required_ruby_version: !ruby/object:Gem::Requirement
157
- none: false
158
143
  requirements:
159
- - - ! '>='
144
+ - - '>='
160
145
  - !ruby/object:Gem::Version
161
146
  version: '0'
162
- segments:
163
- - 0
164
- hash: 2413574982971155708
165
147
  required_rubygems_version: !ruby/object:Gem::Requirement
166
- none: false
167
148
  requirements:
168
- - - ! '>='
149
+ - - '>='
169
150
  - !ruby/object:Gem::Version
170
151
  version: '0'
171
- segments:
172
- - 0
173
- hash: 2413574982971155708
174
152
  requirements: []
175
153
  rubyforge_project:
176
- rubygems_version: 1.8.25
154
+ rubygems_version: 2.0.0
177
155
  signing_key:
178
- specification_version: 3
156
+ specification_version: 4
179
157
  summary: This gem provide extension for CanCan and some new helpers for restrict access
180
158
  on field level.
181
159
  test_files: