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.
- data/README.markdown +63 -207
- data/Rakefile +6 -4
- data/VERSION +1 -1
- data/lib/generators/roles_model/roles/roles_generator.rb +4 -2
- data/lib/roles_generic/base.rb +11 -15
- data/lib/roles_generic/generic/role.rb +18 -0
- data/lib/roles_generic/generic/{class_methods.rb → user/class_methods.rb} +2 -3
- data/lib/roles_generic/generic/{util.rb → user/configuration.rb} +6 -6
- data/lib/roles_generic/generic/{implementation.rb → user/implementation.rb} +1 -1
- data/lib/roles_generic/generic/user.rb +22 -0
- data/lib/roles_generic/generic.rb +3 -68
- data/lib/roles_generic/namespaces.rb +13 -0
- data/lib/roles_generic/{many_roles.rb → strategy/multi/many_roles.rb} +3 -4
- data/lib/roles_generic/{role_strings.rb → strategy/multi/role_strings.rb} +9 -3
- data/lib/roles_generic/{roles_mask.rb → strategy/multi/roles_mask.rb} +2 -2
- data/lib/roles_generic/{roles_string.rb → strategy/multi/roles_string.rb} +2 -4
- data/lib/roles_generic/{admin_flag.rb → strategy/single/admin_flag.rb} +2 -2
- data/lib/roles_generic/{one_role.rb → strategy/single/one_role.rb} +3 -4
- data/lib/roles_generic/{role_string.rb → strategy/single/role_string.rb} +2 -2
- data/lib/roles_generic/strategy.rb +26 -0
- data/lib/roles_generic.rb +8 -1
- data/roles_generic.gemspec +124 -0
- data/spec/generators/admin_flag_generator_spec.rb +2 -2
- data/spec/generators/many_roles_generator_spec.rb +1 -1
- data/spec/generators/one_role_generator_spec.rb +1 -1
- data/spec/generators/role_string_generator_spec.rb +1 -1
- data/spec/generators/role_strings_generator_spec.rb +1 -1
- data/spec/generators/roles_mask_generator_spec.rb +1 -1
- data/spec/generators/roles_string_generator_spec.rb +1 -1
- data/spec/roles_generic/admin_flag_spec.rb +3 -3
- data/spec/roles_generic/many_roles_spec.rb +4 -3
- data/spec/roles_generic/one_role_spec.rb +4 -3
- data/spec/roles_generic/role_string_spec.rb +3 -3
- data/spec/roles_generic/role_strings_spec.rb +3 -3
- data/spec/roles_generic/roles_mask_spec.rb +3 -3
- data/spec/roles_generic/roles_string_spec.rb +3 -3
- data/spec/spec_helper.rb +1 -1
- data/wiki/strategies/admin_flag.textile +20 -0
- data/wiki/strategies/many_roles.textile +48 -0
- data/wiki/strategies/one_role.textile +40 -0
- data/wiki/strategies/role_string.textile +20 -0
- data/wiki/strategies/role_strings.textile +20 -0
- data/wiki/strategies/roles_mask.textile +20 -0
- data/wiki/strategies/roles_string.textile +20 -0
- metadata +61 -22
- data/lib/roles_generic/extensions/core_ext.rb +0 -19
- data/lib/roles_generic/role/class_methods.rb +0 -20
@@ -1,6 +1,4 @@
|
|
1
|
-
|
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
|
21
|
+
extend Roles::Generic::User::Configuration
|
24
22
|
configure
|
25
23
|
end
|
26
24
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
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
|
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
|
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
|
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
|
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
|
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
|
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
@@ -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
|
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 '
|
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,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :admin_flag
|
3
3
|
|
4
4
|
class User
|
5
|
-
include
|
5
|
+
include Roles::Generic
|
6
6
|
|
7
7
|
attr_accessor :name, :admin_flag
|
8
8
|
|
@@ -1,9 +1,10 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :many_roles
|
3
|
+
|
3
4
|
require 'model/role'
|
4
5
|
|
5
6
|
class User
|
6
|
-
include
|
7
|
+
include Roles::Generic
|
7
8
|
role_strategy :many_roles, :default
|
8
9
|
|
9
10
|
role_class :role
|
@@ -1,9 +1,10 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :one_role
|
3
|
+
|
3
4
|
require 'model/role'
|
4
5
|
|
5
6
|
class User
|
6
|
-
include
|
7
|
+
include Roles::Generic
|
7
8
|
role_strategy :one_role, :default
|
8
9
|
|
9
10
|
role_class :role
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :role_string
|
3
3
|
|
4
4
|
class User
|
5
|
-
include
|
5
|
+
include Roles::Generic
|
6
6
|
|
7
7
|
attr_accessor :name, :role_string
|
8
8
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :role_strings
|
3
3
|
|
4
4
|
class User
|
5
|
-
include
|
5
|
+
include Roles::Generic
|
6
6
|
|
7
7
|
attr_accessor :name, :role_strings
|
8
8
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :roles_mask
|
3
3
|
|
4
4
|
class User
|
5
|
-
include
|
5
|
+
include Roles::Generic
|
6
6
|
|
7
7
|
attr_accessor :name, :roles_mask
|
8
8
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
use_roles_strategy :roles_string
|
3
3
|
|
4
4
|
class User
|
5
|
-
include
|
5
|
+
include Roles::Generic
|
6
6
|
|
7
7
|
attr_accessor :name, :roles_string
|
8
8
|
|
data/spec/spec_helper.rb
CHANGED
@@ -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>
|