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
@@ -1,6 +1,4 @@
1
- require_all File.dirname(__FILE__) +'/roles_string'
2
-
3
- module RoleModels::Generic
1
+ module RoleStrategy::Generic
4
2
  module RolesString
5
3
  def self.default_role_attribute
6
4
  :roles_string
@@ -20,7 +18,7 @@ module RoleModels::Generic
20
18
  alias_method :roles_list, :roles
21
19
  end
22
20
 
23
- extend RoleModels::Generic::Base::Configuration
21
+ extend Roles::Generic::User::Configuration
24
22
  configure
25
23
  end
26
24
  end
@@ -1,4 +1,4 @@
1
- module RoleModels::Generic
1
+ module RoleStrategy::Generic
2
2
  module AdminFlag
3
3
  def self.default_role_attribute
4
4
  :admin_flag
@@ -20,7 +20,7 @@ module RoleModels::Generic
20
20
 
21
21
  end # Implementation
22
22
 
23
- extend RoleModels::Generic::Base::Configuration
23
+ extend extend Roles::Generic::User::Configuration
24
24
  configure :num => :single
25
25
  end
26
26
  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 OneRole
6
5
  def self.default_role_attribute
7
6
  :one_role
@@ -30,11 +29,11 @@ module RoleModels::Generic
30
29
  end
31
30
  end
32
31
 
33
- extend RoleModels::Generic::Base::Configuration
32
+ extend Roles::Generic::User::Configuration
34
33
  configure :num => :single, :type => :role_class
35
34
 
36
35
  def self.included(base)
37
- base.extend RoleModels::Generic::Base::RoleClass::ClassMethods
36
+ base.extend Roles::Generic::Role::ClassMethods
38
37
  end
39
38
  end
40
39
  end
@@ -1,6 +1,6 @@
1
1
  require 'set'
2
2
 
3
- module RoleModels::Generic
3
+ module RoleStrategy::Generic
4
4
  module RoleString
5
5
  def self.default_role_attribute
6
6
  :role_string
@@ -23,7 +23,7 @@ module RoleModels::Generic
23
23
  alias_method :roles_list, :roles
24
24
  end
25
25
 
26
- extend RoleModels::Generic::Base::Configuration
26
+ extend Roles::Generic::User::Configuration
27
27
  configure :num => :single
28
28
  end
29
29
  end
@@ -0,0 +1,26 @@
1
+ require 'sugar-high/file'
2
+ require 'sugar-high/array'
3
+
4
+ module Roles::Strategy
5
+ def self.role_strategies cardinality
6
+ pattern = File.dirname(__FILE__) + "/strategy/#{cardinality}/*.rb"
7
+ Dir.glob(pattern).file_names(:rb).to_symbols
8
+ end
9
+
10
+ def self.has_strategy? cardinality, strategy
11
+ role_strategies(cardinality).include?(strategy)
12
+ end
13
+
14
+ def self.cardinality strategy
15
+ [:single, :multi].each do |cardinality|
16
+ return cardinality if has_strategy?(cardinality, strategy)
17
+ end
18
+ raise ArgumentError, "Strategy #{strategy} is not registered as either a single or multi cardinality role strategy"
19
+ end
20
+ end
21
+
22
+ def use_roles_strategy strategy
23
+ cardinality = Roles::Strategy.cardinality(strategy)
24
+ require "roles_generic/strategy/#{cardinality}/#{strategy}"
25
+ end
26
+
data/lib/roles_generic.rb CHANGED
@@ -1,2 +1,9 @@
1
+ require 'require_all'
2
+ require 'active_support/inflector'
3
+ require 'sugar-high/not'
4
+
5
+ require 'roles_generic/namespaces'
1
6
  require 'roles_generic/base'
2
- require 'roles_generic/generic'
7
+ require 'roles_generic/generic'
8
+ require 'roles_generic/strategy'
9
+
@@ -0,0 +1,124 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{roles_generic}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kristian Mandrup"]
12
+ s.date = %q{2010-09-04}
13
+ s.description = %q{Generic role strategies sharing the same API. Easy to insert in any model}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ ".rspec",
23
+ "LICENSE",
24
+ "README.markdown",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/generators/roles_model/roles/roles_generator.rb",
28
+ "lib/roles_generic.rb",
29
+ "lib/roles_generic/base.rb",
30
+ "lib/roles_generic/generic.rb",
31
+ "lib/roles_generic/generic/role.rb",
32
+ "lib/roles_generic/generic/user.rb",
33
+ "lib/roles_generic/generic/user/class_methods.rb",
34
+ "lib/roles_generic/generic/user/configuration.rb",
35
+ "lib/roles_generic/generic/user/implementation.rb",
36
+ "lib/roles_generic/namespaces.rb",
37
+ "lib/roles_generic/strategy.rb",
38
+ "lib/roles_generic/strategy/multi/many_roles.rb",
39
+ "lib/roles_generic/strategy/multi/role_strings.rb",
40
+ "lib/roles_generic/strategy/multi/roles_mask.rb",
41
+ "lib/roles_generic/strategy/multi/roles_string.rb",
42
+ "lib/roles_generic/strategy/single/admin_flag.rb",
43
+ "lib/roles_generic/strategy/single/one_role.rb",
44
+ "lib/roles_generic/strategy/single/role_string.rb",
45
+ "roles_generic.gemspec",
46
+ "spec/generator_spec_helper.rb",
47
+ "spec/generators/admin_flag_generator_spec.rb",
48
+ "spec/generators/many_roles_generator_spec.rb",
49
+ "spec/generators/one_role_generator_spec.rb",
50
+ "spec/generators/role_string_generator_spec.rb",
51
+ "spec/generators/role_strings_generator_spec.rb",
52
+ "spec/generators/roles_mask_generator_spec.rb",
53
+ "spec/generators/roles_string_generator_spec.rb",
54
+ "spec/model/role.rb",
55
+ "spec/roles_generic/admin_flag_spec.rb",
56
+ "spec/roles_generic/many_roles_spec.rb",
57
+ "spec/roles_generic/one_role_spec.rb",
58
+ "spec/roles_generic/role_string_spec.rb",
59
+ "spec/roles_generic/role_strings_spec.rb",
60
+ "spec/roles_generic/roles_mask_spec.rb",
61
+ "spec/roles_generic/roles_string_spec.rb",
62
+ "spec/spec_helper.rb",
63
+ "wiki/strategies/admin_flag.textile",
64
+ "wiki/strategies/many_roles.textile",
65
+ "wiki/strategies/one_role.textile",
66
+ "wiki/strategies/role_string.textile",
67
+ "wiki/strategies/role_strings.textile",
68
+ "wiki/strategies/roles_mask.textile",
69
+ "wiki/strategies/roles_string.textile"
70
+ ]
71
+ s.homepage = %q{http://github.com/kristianmandrup/roles_for_mm}
72
+ s.rdoc_options = ["--charset=UTF-8"]
73
+ s.require_paths = ["lib"]
74
+ s.rubygems_version = %q{1.3.7}
75
+ s.summary = %q{Generic role strategies sharing the same API}
76
+ s.test_files = [
77
+ "spec/generator_spec_helper.rb",
78
+ "spec/generators/admin_flag_generator_spec.rb",
79
+ "spec/generators/many_roles_generator_spec.rb",
80
+ "spec/generators/one_role_generator_spec.rb",
81
+ "spec/generators/role_string_generator_spec.rb",
82
+ "spec/generators/role_strings_generator_spec.rb",
83
+ "spec/generators/roles_mask_generator_spec.rb",
84
+ "spec/generators/roles_string_generator_spec.rb",
85
+ "spec/model/role.rb",
86
+ "spec/roles_generic/admin_flag_spec.rb",
87
+ "spec/roles_generic/many_roles_spec.rb",
88
+ "spec/roles_generic/one_role_spec.rb",
89
+ "spec/roles_generic/role_string_spec.rb",
90
+ "spec/roles_generic/role_strings_spec.rb",
91
+ "spec/roles_generic/roles_mask_spec.rb",
92
+ "spec/roles_generic/roles_string_spec.rb",
93
+ "spec/spec_helper.rb"
94
+ ]
95
+
96
+ if s.respond_to? :specification_version then
97
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
98
+ s.specification_version = 3
99
+
100
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
101
+ s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
102
+ s.add_development_dependency(%q<generator-spec>, ["~> 0.5.1"])
103
+ s.add_runtime_dependency(%q<require_all>, ["~> 1.1.0"])
104
+ s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
105
+ s.add_runtime_dependency(%q<sugar-high>, ["~> 0.2.2"])
106
+ s.add_runtime_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
107
+ else
108
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
109
+ s.add_dependency(%q<generator-spec>, ["~> 0.5.1"])
110
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
111
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
112
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
113
+ s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
114
+ end
115
+ else
116
+ s.add_dependency(%q<rspec>, ["~> 2.0.0.beta.19"])
117
+ s.add_dependency(%q<generator-spec>, ["~> 0.5.1"])
118
+ s.add_dependency(%q<require_all>, ["~> 1.1.0"])
119
+ s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
120
+ s.add_dependency(%q<sugar-high>, ["~> 0.2.2"])
121
+ s.add_dependency(%q<rails3_artifactor>, ["~> 0.1.1"])
122
+ end
123
+ end
124
+
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'role strategy generator: admin_flag' do
@@ -30,7 +30,7 @@ describe 'role strategy generator: admin_flag' do
30
30
  puts "arguments: #{arguments}"
31
31
  g.run_generator arguments.args
32
32
  g.should generate_model :user do |clazz|
33
- clazz.should include_module 'RoleModels::Generic'
33
+ clazz.should include_module 'Roles::Generic'
34
34
  puts "clazz: #{clazz}"
35
35
  clazz.should have_call :roles, :args => ':admin, :user'
36
36
  clazz.should have_call :role_strategy, :args => ":#{strategy}"
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../generator_spec_helper')
1
+ require 'generator_spec_helper'
2
2
  require_generator :roles_model => :roles
3
3
 
4
4
  describe 'helper_generator' do
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/admin_flag'
1
+ require 'spec_helper'
2
+ use_roles_strategy :admin_flag
3
3
 
4
4
  class User
5
- include RoleModels::Generic
5
+ include Roles::Generic
6
6
 
7
7
  attr_accessor :name, :admin_flag
8
8
 
@@ -1,9 +1,10 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/many_roles'
1
+ require 'spec_helper'
2
+ use_roles_strategy :many_roles
3
+
3
4
  require 'model/role'
4
5
 
5
6
  class User
6
- include RoleModels::Generic
7
+ include Roles::Generic
7
8
  role_strategy :many_roles, :default
8
9
 
9
10
  role_class :role
@@ -1,9 +1,10 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/one_role'
1
+ require 'spec_helper'
2
+ use_roles_strategy :one_role
3
+
3
4
  require 'model/role'
4
5
 
5
6
  class User
6
- include RoleModels::Generic
7
+ include Roles::Generic
7
8
  role_strategy :one_role, :default
8
9
 
9
10
  role_class :role
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/role_string'
1
+ require 'spec_helper'
2
+ use_roles_strategy :role_string
3
3
 
4
4
  class User
5
- include RoleModels::Generic
5
+ include Roles::Generic
6
6
 
7
7
  attr_accessor :name, :role_string
8
8
 
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/role_strings'
1
+ require 'spec_helper'
2
+ use_roles_strategy :role_strings
3
3
 
4
4
  class User
5
- include RoleModels::Generic
5
+ include Roles::Generic
6
6
 
7
7
  attr_accessor :name, :role_strings
8
8
 
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/roles_mask'
1
+ require 'spec_helper'
2
+ use_roles_strategy :roles_mask
3
3
 
4
4
  class User
5
- include RoleModels::Generic
5
+ include Roles::Generic
6
6
 
7
7
  attr_accessor :name, :roles_mask
8
8
 
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require 'roles_generic/roles_string'
1
+ require 'spec_helper'
2
+ use_roles_strategy :roles_string
3
3
 
4
4
  class User
5
- include RoleModels::Generic
5
+ include Roles::Generic
6
6
 
7
7
  attr_accessor :name, :roles_string
8
8
 
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,7 @@ require 'rspec/autorun'
3
3
  require 'roles_generic'
4
4
 
5
5
  RSpec.configure do |config|
6
-
6
+ config.mock_with :mocha
7
7
  end
8
8
 
9
9
 
@@ -0,0 +1,20 @@
1
+ h2. Example : admin_flag
2
+
3
+ Creates and uses a binary field 'admin_flag', which when true signals that this user is an administrator and otherwise a normal user.
4
+
5
+ <pre>
6
+ class User
7
+ include RoleModels::Generic
8
+
9
+ attr_accessor :name, :admin_flag
10
+
11
+ role_strategy :admin_flag, :default
12
+
13
+ roles :admin, :user
14
+
15
+ def initialize name, *new_roles
16
+ self.name = name
17
+ self.roles = new_roles
18
+ end
19
+ end
20
+ </pre>
@@ -0,0 +1,48 @@
1
+ h2. Example : many_roles
2
+
3
+ Creates and uses a single relation to a Role model for each user
4
+
5
+ <pre>
6
+ class Role
7
+ attr_accessor :name
8
+
9
+ def self.find_role role_name
10
+ roles.to_a.select{|r| r.name == role_name}.first
11
+ end
12
+
13
+ def self.find_roles *role_names
14
+ result = Set.new
15
+ role_names.flatten.each do |role_name|
16
+ found_role = find_role(role_name)
17
+ result << found_role if found_role
18
+ end
19
+ result
20
+ end
21
+
22
+ class << self
23
+ attr_accessor :roles
24
+ end
25
+
26
+ def initialize name
27
+ @name = name
28
+ self.class.roles ||= Set.new
29
+ self.class.roles << self
30
+ end
31
+ end
32
+
33
+ class User
34
+ include RoleModels::Generic
35
+ role_strategy :many_roles, :default
36
+
37
+ role_class :role
38
+
39
+ attr_accessor :name, :many_roles
40
+
41
+ roles :admin, :user
42
+
43
+ def initialize name, *new_roles
44
+ self.name = name
45
+ self.roles = new_roles
46
+ end
47
+ end
48
+ </pre>
@@ -0,0 +1,40 @@
1
+ h2. Example : one_role
2
+
3
+ Creates and uses a single relation to a Role model for each user
4
+
5
+ <pre>
6
+ class Role
7
+ attr_accessor :name
8
+
9
+ def self.find_role role_name
10
+ roles.to_a.select{|r| r.name == role_name}.first
11
+ end
12
+
13
+ class << self
14
+ attr_accessor :roles
15
+ end
16
+
17
+ def initialize name
18
+ @name = name
19
+ self.class.roles ||= Set.new
20
+ self.class.roles << self
21
+ end
22
+
23
+ end
24
+
25
+ class User
26
+ include RoleModels::Generic
27
+ role_strategy :one_role, :default
28
+
29
+ role_class :role
30
+
31
+ attr_accessor :name, :one_role
32
+
33
+ roles :admin, :user
34
+
35
+ def initialize name, *new_roles
36
+ self.name = name
37
+ self.roles = new_roles
38
+ end
39
+ end
40
+ </pre>
@@ -0,0 +1,20 @@
1
+ h2. Example : role_string
2
+
3
+ Creates and uses a single role name, a string
4
+
5
+ <pre>
6
+ class User
7
+ include RoleModels::Generic
8
+
9
+ attr_accessor :name, :role_string
10
+
11
+ role_strategy :role_string, :default
12
+
13
+ roles :admin, :user
14
+
15
+ def initialize name, *new_roles
16
+ self.name = name
17
+ self.roles = new_roles
18
+ end
19
+ end
20
+ </pre>
@@ -0,0 +1,20 @@
1
+ h2. Example : role_strings
2
+
3
+ Creates and uses an Set of role names as strings
4
+
5
+ <pre>
6
+ class User
7
+ include RoleModels::Generic
8
+
9
+ attr_accessor :name, :role_strings
10
+
11
+ role_strategy :role_strings, :default
12
+
13
+ roles :admin, :user
14
+
15
+ def initialize name, *new_roles
16
+ self.name = name
17
+ self.roles = new_roles
18
+ end
19
+ end
20
+ </pre>
@@ -0,0 +1,20 @@
1
+ h2. Example : roles_mask
2
+
3
+ Creates and uses an Integer field where each on bit signifies a role
4
+
5
+ <pre>
6
+ class User
7
+ include RoleModels::Generic
8
+
9
+ attr_accessor :name, :roles_mask
10
+
11
+ role_strategy :roles_mask, :default
12
+
13
+ roles :admin, :user
14
+
15
+ def initialize name, *new_roles
16
+ self.name = name
17
+ self.roles = new_roles
18
+ end
19
+ end
20
+ </pre>
@@ -0,0 +1,20 @@
1
+ h2. Example : roles_string
2
+
3
+ Creates and uses single comma separated String of role names
4
+
5
+ <pre>
6
+ class User
7
+ include RoleModels::Generic
8
+
9
+ attr_accessor :name, :roles_string
10
+
11
+ role_strategy :roles_string, :default
12
+
13
+ roles :admin, :user
14
+
15
+ def initialize name, *new_roles
16
+ self.name = name
17
+ self.roles = new_roles
18
+ end
19
+ end
20
+ </pre>