roles_generic 0.1.1 → 0.2.0

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 (47) hide show
  1. data/README.markdown +63 -207
  2. data/Rakefile +6 -4
  3. data/VERSION +1 -1
  4. data/lib/generators/roles_model/roles/roles_generator.rb +4 -2
  5. data/lib/roles_generic/base.rb +11 -15
  6. data/lib/roles_generic/generic/role.rb +18 -0
  7. data/lib/roles_generic/generic/{class_methods.rb → user/class_methods.rb} +2 -3
  8. data/lib/roles_generic/generic/{util.rb → user/configuration.rb} +6 -6
  9. data/lib/roles_generic/generic/{implementation.rb → user/implementation.rb} +1 -1
  10. data/lib/roles_generic/generic/user.rb +22 -0
  11. data/lib/roles_generic/generic.rb +3 -68
  12. data/lib/roles_generic/namespaces.rb +13 -0
  13. data/lib/roles_generic/{many_roles.rb → strategy/multi/many_roles.rb} +3 -4
  14. data/lib/roles_generic/{role_strings.rb → strategy/multi/role_strings.rb} +9 -3
  15. data/lib/roles_generic/{roles_mask.rb → strategy/multi/roles_mask.rb} +2 -2
  16. data/lib/roles_generic/{roles_string.rb → strategy/multi/roles_string.rb} +2 -4
  17. data/lib/roles_generic/{admin_flag.rb → strategy/single/admin_flag.rb} +2 -2
  18. data/lib/roles_generic/{one_role.rb → strategy/single/one_role.rb} +3 -4
  19. data/lib/roles_generic/{role_string.rb → strategy/single/role_string.rb} +2 -2
  20. data/lib/roles_generic/strategy.rb +26 -0
  21. data/lib/roles_generic.rb +8 -1
  22. data/roles_generic.gemspec +124 -0
  23. data/spec/generators/admin_flag_generator_spec.rb +2 -2
  24. data/spec/generators/many_roles_generator_spec.rb +1 -1
  25. data/spec/generators/one_role_generator_spec.rb +1 -1
  26. data/spec/generators/role_string_generator_spec.rb +1 -1
  27. data/spec/generators/role_strings_generator_spec.rb +1 -1
  28. data/spec/generators/roles_mask_generator_spec.rb +1 -1
  29. data/spec/generators/roles_string_generator_spec.rb +1 -1
  30. data/spec/roles_generic/admin_flag_spec.rb +3 -3
  31. data/spec/roles_generic/many_roles_spec.rb +4 -3
  32. data/spec/roles_generic/one_role_spec.rb +4 -3
  33. data/spec/roles_generic/role_string_spec.rb +3 -3
  34. data/spec/roles_generic/role_strings_spec.rb +3 -3
  35. data/spec/roles_generic/roles_mask_spec.rb +3 -3
  36. data/spec/roles_generic/roles_string_spec.rb +3 -3
  37. data/spec/spec_helper.rb +1 -1
  38. data/wiki/strategies/admin_flag.textile +20 -0
  39. data/wiki/strategies/many_roles.textile +48 -0
  40. data/wiki/strategies/one_role.textile +40 -0
  41. data/wiki/strategies/role_string.textile +20 -0
  42. data/wiki/strategies/role_strings.textile +20 -0
  43. data/wiki/strategies/roles_mask.textile +20 -0
  44. data/wiki/strategies/roles_string.textile +20 -0
  45. metadata +61 -22
  46. data/lib/roles_generic/extensions/core_ext.rb +0 -19
  47. data/lib/roles_generic/role/class_methods.rb +0 -20
data/README.markdown CHANGED
@@ -1,14 +1,30 @@
1
- # Roles Model base
1
+ # Generic Role strategies
2
2
 
3
3
  Generic role strategies that share the same API and are easy to insert in any existing User model.
4
+ Comes with a Rails 3 generator to instantly configure your Rails 3 app with a Role strategy of choice.
4
5
 
5
- *Update: Now with a Rails 3 generator to instantly populate your user model of choice with a role strategy!*
6
+ I am in the process of developing multiple *roles_xxx* gems in order to support this generic API for various popular ORMs, such as:
6
7
 
7
- # Install
8
+ * Active Record (roles_ar)
9
+ * DataMapper (roles_dm_)
10
+ * Mongoid (roles_mongoid)
11
+ * MongoMapper (roles_mm)
12
+
13
+ Feel free to roll your own ORM extension for your favorite ORM!
14
+
15
+ ## Status update (4 sept, 2010)
16
+
17
+ Roles generic has now been refactored in order to tidy up the code base and make it even more generic, flexible and easy to extend.
18
+
19
+ Currently I'm not sure if the generator fully works. It has a dependency on *rails3_artifactor*, which should work.
20
+ However my gem to test generators (called *generator-spec*), is currently not functioning as it has dependencies to other gems that have undergone major
21
+ refactorings lately. Let me know if the generator works or if not, see if you can make it work using *rails3_artifactor* and let me know the fix ;)
22
+
23
+ ## Install
8
24
 
9
25
  <code>gem install roles_generic</code>
10
26
 
11
- # Usage
27
+ ## Usage
12
28
 
13
29
  The library comes with the following role models built-in:
14
30
 
@@ -22,13 +38,15 @@ The library comes with the following role models built-in:
22
38
 
23
39
  Note: The following examples use RSpec to demonstrate usage scenarios.
24
40
 
41
+ Examples of configuring for the other strategies can be found in the wiki pages.
42
+
25
43
  ## Example : admin_flag
26
44
 
27
45
  Creates and uses a binary field 'admin_flag', which when true signals that this user is an administrator and otherwise a normal user.
28
46
 
29
47
  <pre>
30
48
  class User
31
- include RoleModels::Generic
49
+ include Roles::Generic
32
50
 
33
51
  attr_accessor :name, :admin_flag
34
52
 
@@ -49,7 +67,7 @@ Data Mapper with persistent attributes :name and :admin_flag
49
67
 
50
68
  <pre>
51
69
  class User
52
- include RoleModels::Generic
70
+ include Roles::Generic
53
71
  include DataMapper::Resource
54
72
 
55
73
  property :name, Boolean
@@ -66,232 +84,70 @@ Data Mapper with persistent attributes :name and :admin_flag
66
84
  end
67
85
  </pre>
68
86
 
87
+ ## Role API
69
88
 
70
- ## Example : role_string
71
-
72
- Creates and uses a single role name, a string
73
-
74
- <pre>
75
- class User
76
- include RoleModels::Generic
77
-
78
- attr_accessor :name, :role_string
79
-
80
- role_strategy :role_string, :default
81
-
82
- roles :admin, :user
83
-
84
- def initialize name, *new_roles
85
- self.name = name
86
- self.roles = new_roles
87
- end
88
- end
89
- </pre>
90
-
91
- ## Example : roles_string
92
-
93
- Creates and uses single comma separated String of role names
94
-
95
- <pre>
96
- class User
97
- include RoleModels::Generic
98
-
99
- attr_accessor :name, :roles_string
100
-
101
- role_strategy :roles_string, :default
102
-
103
- roles :admin, :user
104
-
105
- def initialize name, *new_roles
106
- self.name = name
107
- self.roles = new_roles
108
- end
109
- end
110
- </pre>
111
-
112
- ## Example : role_strings
113
-
114
- Creates and uses an Set of role names as strings
115
-
116
- <pre>
117
- class User
118
- include RoleModels::Generic
119
-
120
- attr_accessor :name, :role_strings
121
-
122
- role_strategy :role_strings, :default
123
-
124
- roles :admin, :user
125
-
126
- def initialize name, *new_roles
127
- self.name = name
128
- self.roles = new_roles
129
- end
130
- end
131
- </pre>
132
-
133
- ## Example : roles_mask
134
-
135
- Creates and uses an Integer field where each on bit signifies a role
136
-
137
- <pre>
138
- class User
139
- include RoleModels::Generic
140
-
141
- attr_accessor :name, :roles_mask
142
-
143
- role_strategy :roles_mask, :default
144
-
145
- roles :admin, :user
146
-
147
- def initialize name, *new_roles
148
- self.name = name
149
- self.roles = new_roles
150
- end
151
- end
152
- </pre>
153
-
154
- ## Example : one_role
155
-
156
- Creates and uses a single relation to a Role model for each user
157
-
158
- <pre>
159
- class Role
160
- attr_accessor :name
161
-
162
- def self.find_role role_name
163
- roles.to_a.select{|r| r.name == role_name}.first
164
- end
165
-
166
- class << self
167
- attr_accessor :roles
168
- end
169
-
170
- def initialize name
171
- @name = name
172
- self.class.roles ||= Set.new
173
- self.class.roles << self
174
- end
175
-
176
- end
177
-
178
- class User
179
- include RoleModels::Generic
180
- role_strategy :one_role, :default
181
-
182
- role_class :role
183
-
184
- attr_accessor :name, :one_role
185
-
186
- roles :admin, :user
187
-
188
- def initialize name, *new_roles
189
- self.name = name
190
- self.roles = new_roles
191
- end
192
- end
193
- </pre>
194
-
195
- ## Example : many_roles
196
-
197
- Creates and uses a single relation to a Role model for each user
89
+ ### Instance methods
198
90
 
199
- <pre>
200
- class Role
201
- attr_accessor :name
202
-
203
- def self.find_role role_name
204
- roles.to_a.select{|r| r.name == role_name}.first
205
- end
206
-
207
- def self.find_roles *role_names
208
- result = Set.new
209
- role_names.flatten.each do |role_name|
210
- found_role = find_role(role_name)
211
- result << found_role if found_role
212
- end
213
- result
214
- end
215
-
216
- class << self
217
- attr_accessor :roles
218
- end
219
-
220
- def initialize name
221
- @name = name
222
- self.class.roles ||= Set.new
223
- self.class.roles << self
224
- end
225
- end
226
-
227
- class User
228
- include RoleModels::Generic
229
- role_strategy :many_roles, :default
91
+ Has ALL of the given roles been assigned?
92
+ * has_roles?(*roles) - alias: is?
230
93
 
231
- role_class :role
94
+ Has ANY (at least ONE) of the given roles been assigned?
95
+ * has_role? *roles - alias: has?
232
96
 
233
- attr_accessor :name, :many_roles
97
+ Is this a valid role? (can the role be found in list of valid roles?)
98
+ * valid_role? role
234
99
 
235
- roles :admin, :user
100
+ Is this user the admin user (and user has no other roles)
101
+ * admin? - short for - is?(:admin)
236
102
 
237
- def initialize name, *new_roles
238
- self.name = name
239
- self.roles = new_roles
240
- end
241
- end
242
- </pre>
103
+ ### Class methods
243
104
 
105
+ * roles - list of valid roles
106
+ * roles_attribute - get the attribute where the role is stored on the user
107
+ * roles_attribute= - set the role(s) attribute
108
+
244
109
  ## Usage of API
245
110
 
246
111
  <pre>
247
112
  before :each do
248
113
  @admin_user = User.new 'Admin user', :admin
249
- @user = User.new 'User', :user
114
+ @guest = User.new 'Guest', :guest
250
115
  end
251
116
 
252
117
  it "user 'Admin user' should have role :admin" do
253
- @admin_user.role.should == :admin
254
- @admin_user.roles.should == [:admin]
118
+
119
+ @admin_user.role.should == :admin
120
+ @admin_user.roles.should == [:admin]
255
121
  @admin_user.admin?.should be_true
256
122
 
257
- @admin_user.has_role?(:user).should be_false
123
+ @admin_user.has_role? (:user).should be_false
258
124
 
259
- @admin_user.has_role?(:admin).should be_true
260
- @admin_user.is?(:admin).should be_true
261
- @admin_user.has_roles?(:admin).should be_true
262
- @admin_user.has?(:admin).should be_true
263
- end
125
+ @admin_user.has_role? (:admin).should be_true
126
+ @admin_user.is? (:admin).should be_true
127
+ @admin_user.has_roles? (:admin).should be_true
128
+ @admin_user.has? (:admin).should be_true
264
129
 
265
- it "user 'User' should have role :user" do
266
- @user.roles.should == [:user]
267
- @user.admin?.should be_false
268
-
269
- @user.has_role?(:user).should be_true
270
- @user.has_role?(:admin).should be_false
271
- @user.is?(:admin).should be_false
272
-
273
- @user.has_roles?(:user).should be_true
274
- @user.has?(:admin).should be_false
275
130
  end
276
-
277
- it "should set 'User' role to :admin using roles=" do
278
- @user.roles = :admin
279
- @user.role.should == :admin
280
- @user.has_role?(:admin).should be_true
281
- end
282
- </pre>
283
-
284
- ## Future (TODO)
285
131
 
286
- The following in planned to be completed before the end of August 2010.
132
+ it "user Guest should have role :guest" do
133
+ @guest.roles.should == [:guest]
134
+ @guest.admin?.should be_false
287
135
 
288
- ### Clean up (DRY)
136
+ @guest.has_role? (:guest).should be_true
137
+ @guest.has_role? (:admin).should be_false
138
+ @guest.is? (:admin).should be_false
289
139
 
290
- DRY up the role strategy code a lot more! There is a lot more potential for code reuse - way too much duplication now.
140
+ @guest.has_roles? (:guest).should be_true
141
+ @guest.has? (:admin).should be_false
142
+ end
291
143
 
292
- ### Rails generator
144
+ it "should set role of Guest user from :guest to :admin using roles=" do
145
+ @guest.roles = :admin
146
+ @guest.role.should == :admin
293
147
 
294
- The library will come with a Rails 3 generator that lets you populate a user model with a given role strategy
148
+ @guest.has_role?(:admin).should be_true
149
+ end
150
+ </pre>
295
151
 
296
152
  ## Note on Patches/Pull Requests
297
153
 
data/Rakefile CHANGED
@@ -7,10 +7,12 @@ begin
7
7
  gem.email = "kmandrup@gmail.com"
8
8
  gem.homepage = "http://github.com/kristianmandrup/roles_for_mm"
9
9
  gem.authors = ["Kristian Mandrup"]
10
- gem.add_development_dependency "rspec", ">= 2.0.0.beta.19"
11
- gem.add_development_dependency "generator-spec", ">= 0.5.1"
12
- gem.add_dependency "require_all", ">= 1.1.0"
13
- gem.add_dependency "activesupport", ">= 3.0.0.rc"
10
+ gem.add_development_dependency "rspec", "~> 2.0.0.beta.19"
11
+ gem.add_development_dependency "generator-spec", "~> 0.5.1"
12
+ gem.add_dependency "require_all", "~> 1.1.0"
13
+ gem.add_dependency "activesupport", "~> 3.0.0"
14
+ gem.add_dependency 'sugar-high', "~> 0.2.2"
15
+ gem.add_dependency 'rails3_artifactor', '~> 0.1.1'
14
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
17
  end
16
18
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -1,7 +1,9 @@
1
+ require 'rails3_artifactor'
2
+
1
3
  module RolesModel
2
4
  module Generators
3
5
  class RolesGenerator < Rails::Generators::NamedBase
4
- include Rails::Generators::MigrationHelper
6
+ include Rails3::Assist::Artifact::Model
5
7
 
6
8
  desc "Add role strategy to a model"
7
9
 
@@ -51,7 +53,7 @@ module RolesModel
51
53
 
52
54
  def insertion_text
53
55
  %Q{
54
- include RoleModels::Generic
56
+ include Roles::Generic
55
57
  #{role_strategy_statement}
56
58
  #{roles_statement}
57
59
  }
@@ -1,26 +1,22 @@
1
- require 'require_all'
2
- require 'active_support/inflector'
3
-
4
- module RoleModels
5
- module Generic
6
- end
7
- end
8
-
9
- module RoleModels
1
+ module Roles
10
2
  module Base
11
3
  attr_accessor :orm_name
12
4
 
5
+ def valid_roles
6
+ strategy_class.valid_roles
7
+ end
8
+
13
9
  def roles(*roles)
14
10
  strategy_class.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
15
11
  end
16
12
 
17
- def role_strategy strategy, options=nil
18
- include_strategy orm_name, strategy, options
13
+ def role_strategy strategy_name, options=nil
14
+ include_strategy orm_name, strategy_name, options
19
15
  end
20
16
 
21
- def include_strategy orm, strategy, options=nil
17
+ def include_strategy orm, strategy_name, options=nil
22
18
  begin
23
- constant = "RoleModels::#{orm_name.to_s.camelize}::#{strategy.to_s.camelize}".constantize
19
+ constant = "RoleStrategy::#{orm_name.to_s.camelize}::#{strategy_name.to_s.camelize}".constantize
24
20
 
25
21
  strategy_class_method = %Q{
26
22
  def strategy_class
@@ -37,9 +33,9 @@ module RoleModels
37
33
  include constant
38
34
  end
39
35
  rescue
40
- raise "No Role strategy module for ORM #{orm} found for strategy #{strategy}"
36
+ raise "No Role strategy module for ORM #{orm} found for strategy #{strategy_name}"
41
37
  end
42
38
  constant.apply_options(options) if constant.respond_to? :apply_options
43
39
  end
44
40
  end
45
- end
41
+ end
@@ -0,0 +1,18 @@
1
+ module Roles::Generic::Role
2
+ module InstanceMethods
3
+ def role_class
4
+ self.class.role_class_name
5
+ end
6
+ end
7
+
8
+ module ClassMethods
9
+ def role_class_name
10
+ @role_class_name
11
+ end
12
+
13
+ def role_class class_constant
14
+ const = class_constant.to_s.camelize
15
+ @role_class_name = "#{const}".constantize
16
+ end
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module ClassMethods
3
3
  def inherited(subclass) # :nodoc:
4
- ::RoleModels::Base::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute|
4
+ ::Roles::Generic::User::INHERITABLE_CLASS_ATTRIBUTES.each do |attribute|
5
5
  instance_var = "@#{attribute}"
6
6
  subclass.instance_variable_set(instance_var, instance_variable_get(instance_var))
7
7
  end
@@ -26,7 +26,6 @@ module RoleModels::Generic::Base
26
26
  #
27
27
  # declare valid roles
28
28
  def roles(*roles)
29
- puts "roles: #{roles}"
30
29
  self.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
31
30
  end
32
31
  end
@@ -1,19 +1,19 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module Configuration
3
3
  def configure(options={})
4
4
  numericality = options[:num]
5
5
  type = options[:type]
6
6
 
7
7
  class_eval do
8
- include RoleModels::Generic::Base
9
- include RoleModels::Generic::Base::SingleRole if numericality == :single
10
- include RoleModels::Generic::Base::RoleClass::InstanceMethods if type == :role_class
8
+ include Roles::Generic::User
9
+ include Roles::Generic::User::SingleRole if numericality == :single
10
+ include Roles::Generic::Role::InstanceMethods if type == :role_class
11
11
  include self::Implementation
12
12
 
13
13
  alias_method :role_symbols, :roles
14
14
  end
15
- extend RoleModels::Generic::Base::ClassMethods
16
- extend RoleModels::Generic::Base::DefaultRoleKeys
15
+ extend Roles::Generic::User::ClassMethods
16
+ extend Roles::Generic::User::DefaultRoleKeys
17
17
  end
18
18
  end
19
19
 
@@ -1,4 +1,4 @@
1
- module RoleModels::Generic::Base
1
+ module Roles::Generic::User
2
2
  module Implementation
3
3
 
4
4
  # check if a given role has been assigned
@@ -0,0 +1,22 @@
1
+ require_all File.dirname(__FILE__) +'/user'
2
+
3
+ module Roles::Generic
4
+ module User
5
+ INHERITABLE_CLASS_ATTRIBUTES = [:roles_attribute_name, :valid_roles]
6
+
7
+ include Implementation
8
+
9
+ def self.included(base) # :nodoc:
10
+ base.extend ClassMethods
11
+ base.class_eval do
12
+ class << self
13
+ attr_accessor(*::Roles::Generic::User::INHERITABLE_CLASS_ATTRIBUTES)
14
+
15
+ def apply_options options
16
+ roles_attribute default_role_attribute if options == :default
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,77 +1,12 @@
1
- require 'require_all'
2
- require 'active_support/inflector'
3
- require_all File.dirname(__FILE__) + '/extensions'
1
+ require_all File.dirname(__FILE__) + '/generic'
4
2
 
5
- module RoleModels
6
- module Base
7
- attr_accessor :orm_name
8
-
9
- def valid_roles
10
- strategy_class.valid_roles
11
- end
12
-
13
- def roles(*roles)
14
- strategy_class.valid_roles = Array[*roles].flatten.map { |r| r.to_sym }
15
- end
16
-
17
- def role_strategy strategy, options=nil
18
- include_strategy orm_name, strategy, options
19
- end
20
-
21
- def include_strategy orm, strategy, options=nil
22
- begin
23
- constant = "RoleModels::#{orm_name.to_s.camelize}::#{strategy.to_s.camelize}".constantize
24
-
25
- strategy_class_method = %Q{
26
- def strategy_class
27
- #{constant}
28
- end
29
- }
30
-
31
- class_eval do
32
- eval strategy_class_method
33
- end
34
-
35
- instance_eval do
36
- eval strategy_class_method
37
- include constant
38
- end
39
- rescue
40
- raise "No Role strategy module for ORM #{orm} found for strategy #{strategy}"
41
- end
42
- constant.apply_options(options) if constant.respond_to? :apply_options
43
- end
44
- end
45
- end
46
-
47
- module RoleModels
3
+ module Roles
48
4
  module Generic
49
5
  def self.included(base)
50
- base.extend RoleModels::Base
6
+ base.extend Roles::Base
51
7
  base.orm_name = :generic
52
8
  end
53
9
  end
54
10
  end
55
11
 
56
- require_all File.dirname(__FILE__) +'/generic'
57
-
58
- module RoleModels::Generic
59
- module Base
60
- INHERITABLE_CLASS_ATTRIBUTES = [:roles_attribute_name, :valid_roles]
61
-
62
- include Implementation
63
12
 
64
- def self.included(base) # :nodoc:
65
- base.extend ClassMethods
66
- base.class_eval do
67
- class << self
68
- attr_accessor(*::RoleModels::Generic::Base::INHERITABLE_CLASS_ATTRIBUTES)
69
-
70
- def apply_options options
71
- roles_attribute default_role_attribute if options == :default
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -0,0 +1,13 @@
1
+ require 'sugar-high/module'
2
+
3
+ module Roles
4
+ modules :generic do
5
+ nested_modules :user, :role
6
+ end
7
+ modules :base, :strategy
8
+ end
9
+
10
+ module RoleStrategy
11
+ module Generic
12
+ end
13
+ end
@@ -1,7 +1,6 @@
1
- require 'roles_generic/role/class_methods'
2
1
  require 'set'
3
2
 
4
- module RoleModels::Generic
3
+ module RoleStrategy::Generic
5
4
  module ManyRoles
6
5
  def self.default_role_attribute
7
6
  :many_roles
@@ -29,11 +28,11 @@ module RoleModels::Generic
29
28
  end
30
29
  end
31
30
 
32
- extend RoleModels::Generic::Base::Configuration
31
+ extend Roles::Generic::User::Configuration
33
32
  configure :type => :role_class
34
33
 
35
34
  def self.included(base)
36
- base.extend RoleModels::Generic::Base::RoleClass::ClassMethods
35
+ base.extend Roles::Generic::Role::ClassMethods
37
36
  end
38
37
  end
39
38
  end
@@ -1,4 +1,6 @@
1
- module RoleModels::Generic
1
+ require 'set'
2
+
3
+ module RoleStrategy::Generic
2
4
  module RoleStrings
3
5
  def self.default_role_attribute
4
6
  :role_strings
@@ -8,16 +10,20 @@ module RoleModels::Generic
8
10
  # assign roles
9
11
  def roles=(*roles)
10
12
  new_roles = roles.flatten.map{|r| r.to_s if valid_role?(r)}.compact
11
- self.send("#{strategy_class.roles_attribute_name}=", Set.new(new_roles)) if new_roles && new_roles.not.empty?
13
+ self.send("#{strategy_class.roles_attribute_name}=", ::Set.new(new_roles)) if new_roles && new_roles.not.empty?
12
14
  end
13
15
 
14
16
  # query assigned roles
15
17
  def roles
16
18
  self.send(strategy_class.roles_attribute_name).map{|r| r.to_sym}
17
19
  end
20
+
21
+ def roles_list
22
+ [roles].flatten
23
+ end
18
24
  end
19
25
 
20
- extend RoleModels::Generic::Base::Configuration
26
+ extend Roles::Generic::User::Configuration
21
27
  configure
22
28
  end
23
29
  end
@@ -1,6 +1,6 @@
1
1
  require 'set'
2
2
 
3
- module RoleModels::Generic
3
+ module RoleStrategy::Generic
4
4
  module RolesMask
5
5
  def self.default_role_attribute
6
6
  :roles_mask
@@ -42,7 +42,7 @@ module RoleModels::Generic
42
42
  end
43
43
  end
44
44
 
45
- extend RoleModels::Generic::Base::Configuration
45
+ extend Roles::Generic::User::Configuration
46
46
  configure
47
47
  end
48
48
  end