roles_active_record 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +139 -0
- data/VERSION +1 -1
- data/lib/generators/active_record/roles/roles_generator.rb +58 -14
- data/lib/generators/active_record/roles/templates/many_roles/role.rb +7 -0
- data/lib/generators/active_record/roles/templates/many_roles/user_role.rb +4 -0
- data/lib/generators/active_record/roles/templates/one_role/role.rb +6 -0
- data/lib/roles_active_record/base.rb +52 -1
- data/lib/roles_active_record/many_roles.rb +11 -0
- data/lib/roles_active_record/one_role.rb +5 -0
- data/lib/roles_active_record/strategy/multi/many_roles.rb +0 -12
- data/lib/roles_active_record/strategy/single/one_role.rb +1 -7
- data/roles_active_record.gemspec +18 -18
- data/spec/fixtures/one_role_setup.rb +1 -1
- data/spec/generator_spec_helper.rb +1 -1
- data/spec/roles_active_record/generators/{roles_generator_spec.rb → admin_flag_gen_spec.rb} +11 -26
- data/spec/roles_active_record/generators/many_roles_gen_spec.rb +55 -0
- data/spec/roles_active_record/generators/{setup_generator_spec.rb → migration_generator_spec.rb} +0 -0
- data/spec/roles_active_record/generators/one_role_gen_spec.rb +49 -0
- data/spec/roles_active_record/strategy/single/one_role_spec.rb +2 -1
- metadata +19 -19
- data/README.markdown +0 -191
- data/logging.log +0 -26
- data/tmp/rails/app/models/user.rb +0 -7
- data/tmp/rails/config/routes.rb +0 -2
- data/tmp/rails/db/migrations/20100912101428_add_admin_flag_strategy.rb +0 -14
- data/tmp/rails/db/migrations/20100912101429_remove_admin_flag_strategy.rb +0 -14
- data/tmp/rails/db/migrations/20100912105055_add_many_roles_strategy.rb +0 -40
- data/tmp/rails/db/migrations/20100912105323_add_one_role_strategy.rb +0 -40
- data/tmp/rails/db/migrations/20100912110044_add_role_string_strategy.rb +0 -13
- data/tmp/rails/db/migrations/20100912110249_add_roles_mask_strategy.rb +0 -13
data/README.textile
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
h1. Roles for Active Record
|
2
|
+
|
3
|
+
This is an Active Record implementation of the "Roles generic API":https://github.com/kristianmandrup/roles_generic/wiki
|
4
|
+
Please also see the "Roles generic README":https://github.com/kristianmandrup/roles_generic
|
5
|
+
|
6
|
+
Roles lets you add a _role strategy_ of choice to your user model.
|
7
|
+
Roles supports strategies with either an inline attribute on user or a separate Role model (see below).
|
8
|
+
|
9
|
+
h2. Install
|
10
|
+
|
11
|
+
<code>gem install roles_active_record</code>
|
12
|
+
|
13
|
+
h3. Install in Rails app
|
14
|
+
|
15
|
+
Insert in Gemfile:
|
16
|
+
|
17
|
+
<code>gem 'roles_active_record'</code>
|
18
|
+
|
19
|
+
Run <code>$ bundle install</code> from terminal
|
20
|
+
|
21
|
+
Alternatively install using "Cream":http://github.com/kristianmandrup/cream
|
22
|
+
|
23
|
+
h2. Role strategies
|
24
|
+
|
25
|
+
The following Role strategies are available for Active Record:
|
26
|
+
|
27
|
+
h3. Inline attribute on User
|
28
|
+
|
29
|
+
* admin_flag
|
30
|
+
* roles_mask
|
31
|
+
* role_string
|
32
|
+
|
33
|
+
These strategies all use an inline attribute on the User model.
|
34
|
+
|
35
|
+
h3. Reference to Role
|
36
|
+
|
37
|
+
* many_roles
|
38
|
+
* one_role
|
39
|
+
|
40
|
+
These strategies use a separate Role model (class and table).
|
41
|
+
|
42
|
+
h2. Role strategy configuration
|
43
|
+
|
44
|
+
The following demonstrates some examples of role strategy configuration.
|
45
|
+
|
46
|
+
h3. Strategy: admin_flag
|
47
|
+
|
48
|
+
<pre>class User < ActiveRecord::Base
|
49
|
+
include Roles::ActiveRecord
|
50
|
+
|
51
|
+
strategy :admin_flag, :default
|
52
|
+
valid_roles_are :admin, :guest
|
53
|
+
end
|
54
|
+
</pre>
|
55
|
+
|
56
|
+
h3. Strategy: one_role
|
57
|
+
|
58
|
+
For strategies that use a separate Role model you must call the class method #role_class with the name of the role class
|
59
|
+
|
60
|
+
<pre>class Bruger < ActiveRecord::Base
|
61
|
+
include Roles::ActiveRecord
|
62
|
+
|
63
|
+
strategy :one_role, :role_class => :rolle
|
64
|
+
valid_roles_are :admin, :guest
|
65
|
+
...
|
66
|
+
end
|
67
|
+
</pre>
|
68
|
+
|
69
|
+
Here the role names have been customized
|
70
|
+
|
71
|
+
h3. Default Role classes
|
72
|
+
|
73
|
+
The default role classes can currently be included by:
|
74
|
+
|
75
|
+
One role:
|
76
|
+
|
77
|
+
<code>require 'roles_active_record/one_role'</code>
|
78
|
+
|
79
|
+
Many roles:
|
80
|
+
|
81
|
+
<code>require 'roles_active_record/many_roles'</code>
|
82
|
+
|
83
|
+
Note: These files will automatically be included when needed under normal conditions.
|
84
|
+
|
85
|
+
h2. Roles generators
|
86
|
+
|
87
|
+
The gem includes these Rails 3 generators:
|
88
|
+
|
89
|
+
* active_record:roles
|
90
|
+
* active_record:roles_migration
|
91
|
+
|
92
|
+
h3. Roles generator
|
93
|
+
|
94
|
+
Let you populate a User model with a given role strategy
|
95
|
+
|
96
|
+
Example: Apply Role strategy _admin_flag_ to the User and make the default roles :admin and :guest available
|
97
|
+
|
98
|
+
<code>$ rails g active_record:roles User --strategy admin_flag</code>
|
99
|
+
|
100
|
+
Example: Apply Role strategy _role_string_ to the User and make the roles :admin, :guest and :author available
|
101
|
+
|
102
|
+
<code>$ rails g active_record:roles_migration User --strategy role_string --roles author</code>
|
103
|
+
|
104
|
+
Example: Apply Role strategy _one_role_ to the User model with roles :user, :special and :editor
|
105
|
+
|
106
|
+
<code>$ rails g active_record:roles_migration User --strategy one_role --roles user special editor --no-default-roles</code>
|
107
|
+
|
108
|
+
Example: Apply Role strategy _many_role_ to the User model with default roles and customizing role class names to BrugerRolle and Rolle
|
109
|
+
|
110
|
+
<code>$ rails g active_record:roles_migration User -s one_role -r user editor -rc Rolle -urc BrugerRolle</code>
|
111
|
+
|
112
|
+
For the strategies _one_role_ and _many_roles_ the generator also generates the Role and UserRole classes in the app/models dir. If you customize the names of these
|
113
|
+
classes (using generator arguments), the customized classes will be generated and "linked up" correctly (with has and belongs_to statements).
|
114
|
+
|
115
|
+
h3. Roles migration generator
|
116
|
+
|
117
|
+
In case you only want to generate Role migrations.
|
118
|
+
|
119
|
+
Example: admin_flag Role strategy
|
120
|
+
|
121
|
+
<code>$ rails g active_record:roles_migration User --strategy admin_flag</code>
|
122
|
+
|
123
|
+
Create reverse migration
|
124
|
+
|
125
|
+
<code>$ rails g active_record:roles_migration User --strategy admin_flag --reverse</code>
|
126
|
+
|
127
|
+
h2. Note on Patches/Pull Requests
|
128
|
+
|
129
|
+
* Fork the project.
|
130
|
+
* Make your feature addition or bug fix.
|
131
|
+
* Add tests for it. This is important so I don't break it in a
|
132
|
+
future version unintentionally.
|
133
|
+
* Commit, do not mess with rakefile, version, or history.
|
134
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
135
|
+
* Send me a pull request. Bonus points for topic branches.
|
136
|
+
|
137
|
+
h2. Copyright
|
138
|
+
|
139
|
+
Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -11,9 +11,14 @@ module ActiveRecord
|
|
11
11
|
class_option :strategy, :type => :string, :aliases => "-s", :default => 'role_string',
|
12
12
|
:desc => "Role strategy to use (admin_flag, role_string, roles_string, role_strings, one_role, many_roles, roles_mask)"
|
13
13
|
|
14
|
-
class_option :roles,
|
15
|
-
class_option :
|
16
|
-
class_option :
|
14
|
+
class_option :roles, :type => :array, :aliases => "-r", :default => [], :desc => "Valid roles"
|
15
|
+
class_option :role_class, :type => :string, :aliases => "-rc", :default => 'Role', :desc => "Role class"
|
16
|
+
class_option :user_role_class, :type => :string, :aliases => "-urc", :default => 'UserRole', :desc => "User Role join class"
|
17
|
+
|
18
|
+
class_option :default_roles, :type => :boolean, :default => true, :desc => "Use default roles :admin and :base"
|
19
|
+
class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
|
20
|
+
|
21
|
+
source_root File.dirname(__FILE__) + '/templates'
|
17
22
|
|
18
23
|
def apply_role_strategy
|
19
24
|
logger.add_logfile :logfile => logfile if logfile
|
@@ -23,21 +28,57 @@ module ActiveRecord
|
|
23
28
|
insertion_text
|
24
29
|
end
|
25
30
|
rescue
|
31
|
+
logger.debug "Model #{name} not found"
|
26
32
|
say "Model #{name} not found"
|
27
33
|
end
|
28
34
|
end
|
29
|
-
|
35
|
+
|
36
|
+
def copy_role_models
|
37
|
+
logger.debug 'copy_role_models'
|
38
|
+
case strategy.to_sym
|
39
|
+
when :one_role
|
40
|
+
copy_one_role_model
|
41
|
+
when :many_roles
|
42
|
+
copy_many_roles_models
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
30
46
|
protected
|
31
47
|
|
32
48
|
extend Rails3::Assist::UseMacro
|
33
49
|
use_orm :active_record
|
34
50
|
include Rails3::Assist::BasicLogger
|
35
51
|
|
52
|
+
def copy_one_role_model
|
53
|
+
logger.debug "copy_one_role_model: #{role_class.underscore}"
|
54
|
+
|
55
|
+
template 'one_role/role.rb', "app/models/#{role_class.underscore}.rb"
|
56
|
+
end
|
57
|
+
|
58
|
+
def copy_many_roles_models
|
59
|
+
logger.debug "copy_many_roles_models: #{role_class.underscore} and #{user_role_class.underscore}"
|
60
|
+
|
61
|
+
template 'many_roles/role.rb', "app/models/#{role_class.underscore}.rb"
|
62
|
+
template 'many_roles/user_role.rb', "app/models/#{user_role_class.underscore}.rb"
|
63
|
+
end
|
64
|
+
|
65
|
+
def user_class
|
66
|
+
options[:user_class].classify || 'User'
|
67
|
+
end
|
68
|
+
|
69
|
+
def role_class
|
70
|
+
options[:role_class].classify || 'Role'
|
71
|
+
end
|
72
|
+
|
73
|
+
def user_role_class
|
74
|
+
options[:user_role_class].classify || 'UserRole'
|
75
|
+
end
|
76
|
+
|
36
77
|
def logfile
|
37
78
|
options[:logfile]
|
38
79
|
end
|
39
80
|
|
40
|
-
def
|
81
|
+
def user_class
|
41
82
|
name || 'User'
|
42
83
|
end
|
43
84
|
|
@@ -57,27 +98,30 @@ module ActiveRecord
|
|
57
98
|
roles_to_add.map{|r| ":#{r}" }
|
58
99
|
end
|
59
100
|
|
60
|
-
def
|
61
|
-
|
62
|
-
roles ? "valid_roles_are #{roles.join(', ')}" : ''
|
101
|
+
def has_valid_roles_statement?
|
102
|
+
!(read_model(user_class) =~ /valid_roles_are/).nil?
|
63
103
|
end
|
64
104
|
|
65
|
-
def
|
66
|
-
|
105
|
+
def valid_roles_statement
|
106
|
+
return '' if has_valid_roles_statement?
|
107
|
+
roles ? "valid_roles_are #{roles.join(', ')}" : ''
|
67
108
|
end
|
68
109
|
|
69
110
|
def role_strategy_statement
|
70
|
-
"strategy :#{strategy},
|
111
|
+
"strategy :#{strategy}, #{strategy_options}"
|
71
112
|
end
|
72
113
|
|
73
|
-
def
|
74
|
-
|
114
|
+
def strategy_options
|
115
|
+
if role_class != 'Role' || user_role_class != 'UserRole' && role_ref_strategy?
|
116
|
+
return ":role_class => '#{role_class}', :user_role_class => 'user_role_class'"
|
117
|
+
end
|
118
|
+
":default"
|
75
119
|
end
|
76
120
|
|
77
121
|
def insertion_text
|
78
122
|
%Q{include Roles::#{orm.to_s.camelize}
|
79
123
|
#{role_strategy_statement}
|
80
|
-
#{
|
124
|
+
#{valid_roles_statement}}
|
81
125
|
end
|
82
126
|
|
83
127
|
def strategy
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class <%= role_class %> < ActiveRecord::Base
|
2
|
+
scope :named, lambda{|role_names| where(:name.in => role_names.flatten)}
|
3
|
+
has_many :<%= user_class.pluralize.underscore %>, :through => :<%= user_role_class.pluralize.underscore %>
|
4
|
+
has_many :<%= user_role_class.pluralize.underscore %>
|
5
|
+
|
6
|
+
validates :name, :uniqueness => true
|
7
|
+
end
|
@@ -12,8 +12,59 @@ module Roles::ActiveRecord
|
|
12
12
|
end
|
13
13
|
|
14
14
|
module ClassMethods
|
15
|
-
|
15
|
+
MAP = {
|
16
|
+
:admin_flag => "attr_accessor :admin_flag",
|
17
|
+
|
18
|
+
:many_roles => "attr_accessor :many_roles",
|
19
|
+
:one_role => "belongs_to :one_role, :foreign_key => :role_id, :class_name => 'Role'",
|
20
|
+
|
21
|
+
:embed_many_roles => "attr_accessor :many_roles",
|
22
|
+
:embed_one_role => "attr_accessor :one_role",
|
23
|
+
|
24
|
+
:roles_mask => "attr_accessor :roles_mask",
|
25
|
+
:role_string => "attr_accessor :role_string",
|
26
|
+
:role_strings => "attr_accessor :role_strings",
|
27
|
+
:roles_string => "attr_accessor :roles_string"
|
28
|
+
}
|
29
|
+
|
30
|
+
def strategy name, options = {}
|
31
|
+
strategy_name = name.to_sym
|
32
|
+
raise ArgumentError, "Unknown role strategy #{strategy_name}" if !MAP.keys.include? strategy_name
|
33
|
+
use_roles_strategy strategy_name
|
34
|
+
|
35
|
+
if !options.kind_of? Symbol
|
36
|
+
@role_class_name = get_role_class(strategy_name, options)
|
37
|
+
else
|
38
|
+
@role_class_name = default_role_class(strategy_name) if strategies_with_role_class.include? strategy_name
|
39
|
+
end
|
40
|
+
|
41
|
+
if (options == :default || options[:config] == :default) && MAP[name]
|
42
|
+
instance_eval statement(MAP[strategy_name])
|
43
|
+
end
|
44
|
+
|
16
45
|
set_role_strategy name, options
|
17
46
|
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def statement code_str
|
51
|
+
code_str.gsub /Role/, @role_class_name.to_s
|
52
|
+
end
|
53
|
+
|
54
|
+
def default_role_class strategy_name
|
55
|
+
if defined? ::Role
|
56
|
+
require "roles_active_record/#{strategy_name}"
|
57
|
+
return ::Role
|
58
|
+
end
|
59
|
+
raise Error, "Default Role class not defined"
|
60
|
+
end
|
61
|
+
|
62
|
+
def strategies_with_role_class
|
63
|
+
[:one_role, :embed_one_role, :many_roles,:embed_many_roles]
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_role_class strategy_name, options
|
67
|
+
options[:role_class] ? options[:role_class].to_s.camelize.constantize : default_role_class(strategy_name)
|
68
|
+
end
|
18
69
|
end
|
19
70
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Role < ActiveRecord::Base
|
2
|
+
scope :named, lambda{|role_names| where(:name.in => role_names.flatten)}
|
3
|
+
has_many :users, :through => :user_roles
|
4
|
+
has_many :user_roles
|
5
|
+
validates :name, :uniqueness => true
|
6
|
+
end
|
7
|
+
|
8
|
+
class UserRole < ActiveRecord::Base
|
9
|
+
belongs_to :user
|
10
|
+
belongs_to :role
|
11
|
+
end
|
@@ -1,17 +1,5 @@
|
|
1
1
|
require 'roles_active_record/strategy/multi'
|
2
2
|
|
3
|
-
class Role < ActiveRecord::Base
|
4
|
-
scope :named, lambda{|role_names| where(:name.in => role_names.flatten)}
|
5
|
-
has_many :users, :through => :user_roles
|
6
|
-
has_many :user_roles
|
7
|
-
validates :name, :uniqueness => true
|
8
|
-
end
|
9
|
-
|
10
|
-
class UserRole < ActiveRecord::Base
|
11
|
-
belongs_to :user
|
12
|
-
belongs_to :role
|
13
|
-
end
|
14
|
-
|
15
3
|
module RoleStrategy::ActiveRecord
|
16
4
|
module ManyRoles
|
17
5
|
def self.default_role_attribute
|
@@ -1,11 +1,5 @@
|
|
1
1
|
require 'roles_active_record/strategy/single'
|
2
2
|
|
3
|
-
class Role < ActiveRecord::Base
|
4
|
-
scope :named, lambda{|role_names| where(:name.in => role_names.flatten)}
|
5
|
-
has_many :users
|
6
|
-
validates :name, :uniqueness => true
|
7
|
-
end
|
8
|
-
|
9
3
|
module RoleStrategy::ActiveRecord
|
10
4
|
module OneRole
|
11
5
|
def self.default_role_attribute
|
@@ -15,7 +9,7 @@ module RoleStrategy::ActiveRecord
|
|
15
9
|
def self.included base
|
16
10
|
base.extend Roles::Generic::Role::ClassMethods
|
17
11
|
base.extend ClassMethods
|
18
|
-
base.belongs_to :one_role, :foreign_key => :role_id, :class_name => 'Role'
|
12
|
+
# base.belongs_to :one_role, :foreign_key => :role_id, :class_name => 'Role'
|
19
13
|
end
|
20
14
|
|
21
15
|
module ClassMethods
|
data/roles_active_record.gemspec
CHANGED
@@ -5,28 +5,31 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{roles_active_record}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
12
|
-
s.date = %q{2010-12-
|
12
|
+
s.date = %q{2010-12-25}
|
13
13
|
s.description = %q{Makes it easy to set a role strategy on your User model in Active Record}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README.
|
17
|
+
"README.textile"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
22
|
"Gemfile",
|
23
23
|
"LICENSE",
|
24
|
-
"README.
|
24
|
+
"README.textile",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"config/database.yml",
|
28
28
|
"development.sqlite3",
|
29
29
|
"lib/generators/active_record/roles/roles_generator.rb",
|
30
|
+
"lib/generators/active_record/roles/templates/many_roles/role.rb",
|
31
|
+
"lib/generators/active_record/roles/templates/many_roles/user_role.rb",
|
32
|
+
"lib/generators/active_record/roles/templates/one_role/role.rb",
|
30
33
|
"lib/generators/active_record/roles_migration/roles_migration_generator.rb",
|
31
34
|
"lib/generators/active_record/roles_migration/templates/add_admin_flag_strategy.erb",
|
32
35
|
"lib/generators/active_record/roles_migration/templates/add_many_roles_strategy.erb",
|
@@ -35,7 +38,9 @@ Gem::Specification.new do |s|
|
|
35
38
|
"lib/generators/active_record/roles_migration/templates/add_roles_mask_strategy.erb",
|
36
39
|
"lib/roles_active_record.rb",
|
37
40
|
"lib/roles_active_record/base.rb",
|
41
|
+
"lib/roles_active_record/many_roles.rb",
|
38
42
|
"lib/roles_active_record/namespaces.rb",
|
43
|
+
"lib/roles_active_record/one_role.rb",
|
39
44
|
"lib/roles_active_record/role.rb",
|
40
45
|
"lib/roles_active_record/strategy.rb",
|
41
46
|
"lib/roles_active_record/strategy/multi.rb",
|
@@ -48,7 +53,6 @@ Gem::Specification.new do |s|
|
|
48
53
|
"lib/roles_active_record/strategy/single/role_string.rb",
|
49
54
|
"lib/views/_multi_role_selector.erb.html",
|
50
55
|
"lib/views/_single_role_selector.erb.html",
|
51
|
-
"logging.log",
|
52
56
|
"roles_active_record.gemspec",
|
53
57
|
"sandbox/Rakefile",
|
54
58
|
"sandbox/add_role_to_users_migration.erb",
|
@@ -74,13 +78,15 @@ Gem::Specification.new do |s|
|
|
74
78
|
"spec/migrations/role_string/002_add_role_string_strategy.rb",
|
75
79
|
"spec/migrations/roles_mask/002_add_roles_mask_strategy.rb",
|
76
80
|
"spec/migrations/users/001_create_users.rb",
|
77
|
-
"spec/roles_active_record/generators/
|
81
|
+
"spec/roles_active_record/generators/admin_flag_gen_spec.rb",
|
82
|
+
"spec/roles_active_record/generators/many_roles_gen_spec.rb",
|
83
|
+
"spec/roles_active_record/generators/migration_generator_spec.rb",
|
84
|
+
"spec/roles_active_record/generators/one_role_gen_spec.rb",
|
78
85
|
"spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
|
79
86
|
"spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
|
80
87
|
"spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
|
81
88
|
"spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
|
82
89
|
"spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
|
83
|
-
"spec/roles_active_record/generators/setup_generator_spec.rb",
|
84
90
|
"spec/roles_active_record/strategy/api.rb",
|
85
91
|
"spec/roles_active_record/strategy/api_examples.rb",
|
86
92
|
"spec/roles_active_record/strategy/multi/many_roles_spec.rb",
|
@@ -91,15 +97,7 @@ Gem::Specification.new do |s|
|
|
91
97
|
"spec/roles_active_record/strategy/single/one_role_unique_spec.rb",
|
92
98
|
"spec/roles_active_record/strategy/single/role_string_spec.rb",
|
93
99
|
"spec/roles_active_record/strategy/user_setup.rb",
|
94
|
-
"spec/spec_helper.rb"
|
95
|
-
"tmp/rails/app/models/user.rb",
|
96
|
-
"tmp/rails/config/routes.rb",
|
97
|
-
"tmp/rails/db/migrations/20100912101428_add_admin_flag_strategy.rb",
|
98
|
-
"tmp/rails/db/migrations/20100912101429_remove_admin_flag_strategy.rb",
|
99
|
-
"tmp/rails/db/migrations/20100912105055_add_many_roles_strategy.rb",
|
100
|
-
"tmp/rails/db/migrations/20100912105323_add_one_role_strategy.rb",
|
101
|
-
"tmp/rails/db/migrations/20100912110044_add_role_string_strategy.rb",
|
102
|
-
"tmp/rails/db/migrations/20100912110249_add_roles_mask_strategy.rb"
|
100
|
+
"spec/spec_helper.rb"
|
103
101
|
]
|
104
102
|
s.homepage = %q{http://github.com/kristianmandrup/roles_active_record}
|
105
103
|
s.require_paths = ["lib"]
|
@@ -118,13 +116,15 @@ Gem::Specification.new do |s|
|
|
118
116
|
"spec/migrations/role_string/002_add_role_string_strategy.rb",
|
119
117
|
"spec/migrations/roles_mask/002_add_roles_mask_strategy.rb",
|
120
118
|
"spec/migrations/users/001_create_users.rb",
|
121
|
-
"spec/roles_active_record/generators/
|
119
|
+
"spec/roles_active_record/generators/admin_flag_gen_spec.rb",
|
120
|
+
"spec/roles_active_record/generators/many_roles_gen_spec.rb",
|
121
|
+
"spec/roles_active_record/generators/migration_generator_spec.rb",
|
122
|
+
"spec/roles_active_record/generators/one_role_gen_spec.rb",
|
122
123
|
"spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb",
|
123
124
|
"spec/roles_active_record/generators/roles_migration/many_roles_spec.rb",
|
124
125
|
"spec/roles_active_record/generators/roles_migration/one_role_spec.rb",
|
125
126
|
"spec/roles_active_record/generators/roles_migration/role_string_spec.rb",
|
126
127
|
"spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb",
|
127
|
-
"spec/roles_active_record/generators/setup_generator_spec.rb",
|
128
128
|
"spec/roles_active_record/strategy/api.rb",
|
129
129
|
"spec/roles_active_record/strategy/api_examples.rb",
|
130
130
|
"spec/roles_active_record/strategy/multi/many_roles_spec.rb",
|
@@ -6,7 +6,7 @@ require 'roles_generic'
|
|
6
6
|
|
7
7
|
RSpec::Generator.configure do |config|
|
8
8
|
config.debug = false
|
9
|
-
config.remove_temp_dir =
|
9
|
+
config.remove_temp_dir = true
|
10
10
|
config.default_rails_root(__FILE__)
|
11
11
|
config.lib = File.dirname(__FILE__) + '/../lib'
|
12
12
|
config.logger = :stdout
|
@@ -1,15 +1,18 @@
|
|
1
1
|
require 'generator_spec_helper'
|
2
|
-
|
2
|
+
|
3
|
+
# require_generator :active_record => :roles
|
4
|
+
require 'generators/active_record/roles/roles_generator'
|
3
5
|
|
4
6
|
# root_dir = Rails3::Assist::Directory.rails_root
|
5
|
-
root_dir = File.join(Rails.application.config.root_dir, 'rails')
|
7
|
+
# root_dir = File.join(Rails.application.config.root_dir, 'rails')
|
8
|
+
root_dir = Rails.root
|
6
9
|
|
7
|
-
describe '
|
10
|
+
describe 'roles generator' do
|
8
11
|
describe 'ORM: active_record' do
|
9
12
|
use_orm :active_record
|
10
13
|
|
11
14
|
before do
|
12
|
-
setup_generator '
|
15
|
+
setup_generator 'AR_generator' do
|
13
16
|
tests ActiveRecord::Generators::RolesGenerator
|
14
17
|
end
|
15
18
|
end
|
@@ -19,10 +22,10 @@ describe 'role strategy generator: admin_flag' do
|
|
19
22
|
end
|
20
23
|
|
21
24
|
after :each do
|
22
|
-
|
25
|
+
remove_model :user
|
23
26
|
end
|
24
27
|
|
25
|
-
it "should configure 'admin_flag' strategy without default roles" do
|
28
|
+
it "should configure 'admin_flag' strategy without default roles" do
|
26
29
|
create_model :user do
|
27
30
|
'# content'
|
28
31
|
end
|
@@ -33,12 +36,12 @@ describe 'role strategy generator: admin_flag' do
|
|
33
36
|
root_dir.should have_model :user do |clazz|
|
34
37
|
clazz.should include_module 'Roles::ActiveRecord'
|
35
38
|
clazz.should have_call :valid_roles_are, :args => ':special'
|
36
|
-
clazz.should have_call :strategy, :args => ":admin_flag"
|
39
|
+
clazz.should have_call :strategy, :args => ":admin_flag"
|
37
40
|
end
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
41
|
-
it "should configure 'admin_flag' strategy" do
|
44
|
+
it "should configure 'admin_flag' strategy" do
|
42
45
|
create_model :user do
|
43
46
|
'# content'
|
44
47
|
end
|
@@ -52,24 +55,6 @@ describe 'role strategy generator: admin_flag' do
|
|
52
55
|
clazz.should have_call :strategy, :args => ":admin_flag"
|
53
56
|
end
|
54
57
|
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should configure 'one_role' strategy" do
|
58
|
-
create_model :user do
|
59
|
-
'# content'
|
60
|
-
end
|
61
|
-
with_generator do |g|
|
62
|
-
arguments = "User --strategy one_role --roles admin user"
|
63
|
-
puts "arguments: #{arguments}"
|
64
|
-
g.run_generator arguments.args
|
65
|
-
root_dir.should have_model :user do |clazz|
|
66
|
-
clazz.should include_module 'Roles::ActiveRecord'
|
67
|
-
clazz.should have_call :valid_roles_are, :args => ':admin, :guest, :user'
|
68
|
-
clazz.should have_call :role_class, :args => ":role"
|
69
|
-
clazz.should have_call :strategy, :args => ":one_role"
|
70
|
-
end
|
71
|
-
end
|
72
58
|
end
|
73
59
|
end
|
74
60
|
end
|
75
|
-
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'generator_spec_helper'
|
2
|
+
|
3
|
+
# require_generator :active_record => :roles
|
4
|
+
require 'generators/active_record/roles/roles_generator'
|
5
|
+
|
6
|
+
# root_dir = Rails3::Assist::Directory.rails_root
|
7
|
+
# root_dir = File.join(Rails.application.config.root_dir, 'rails')
|
8
|
+
root_dir = Rails.root
|
9
|
+
|
10
|
+
describe 'roles generator' do
|
11
|
+
describe 'ORM: active_record' do
|
12
|
+
use_orm :active_record
|
13
|
+
|
14
|
+
before do
|
15
|
+
setup_generator 'AR_generator' do
|
16
|
+
tests ActiveRecord::Generators::RolesGenerator
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
before :each do
|
21
|
+
remove_model :user
|
22
|
+
end
|
23
|
+
|
24
|
+
after :each do
|
25
|
+
remove_model :user
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should configure 'many_roles' strategy" do
|
29
|
+
create_model :user do
|
30
|
+
'# content'
|
31
|
+
end
|
32
|
+
with_generator do |g|
|
33
|
+
arguments = "User --strategy many_roles --roles admin user"
|
34
|
+
puts "arguments: #{arguments}"
|
35
|
+
g.run_generator arguments.args
|
36
|
+
root_dir.should have_model :user do |clazz|
|
37
|
+
clazz.should include_module 'Roles::ActiveRecord'
|
38
|
+
clazz.should have_call :valid_roles_are, :args => ':admin, :guest, :user'
|
39
|
+
clazz.should have_call :strategy, :args => ":many_roles"
|
40
|
+
end
|
41
|
+
|
42
|
+
root_dir.should have_model :role do |clazz|
|
43
|
+
clazz.should have_call :validates, :args => ':name, :uniqueness => true'
|
44
|
+
clazz.should have_call :has_many, :args => ':users, :through => :user_roles'
|
45
|
+
clazz.should have_call :has_many, :args => ':user_roles'
|
46
|
+
end
|
47
|
+
|
48
|
+
root_dir.should have_model :user_role do |clazz|
|
49
|
+
clazz.should have_call :belongs_to, :args => ':user'
|
50
|
+
clazz.should have_call :belongs_to, :args => ':role'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/spec/roles_active_record/generators/{setup_generator_spec.rb → migration_generator_spec.rb}
RENAMED
File without changes
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'generator_spec_helper'
|
2
|
+
|
3
|
+
# require_generator :active_record => :roles
|
4
|
+
require 'generators/active_record/roles/roles_generator'
|
5
|
+
|
6
|
+
# root_dir = Rails3::Assist::Directory.rails_root
|
7
|
+
# root_dir = File.join(Rails.application.config.root_dir, 'rails')
|
8
|
+
root_dir = Rails.root
|
9
|
+
|
10
|
+
describe 'roles generator' do
|
11
|
+
describe 'ORM: active_record' do
|
12
|
+
use_orm :active_record
|
13
|
+
|
14
|
+
before do
|
15
|
+
setup_generator 'AR_generator' do
|
16
|
+
tests ActiveRecord::Generators::RolesGenerator
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
before :each do
|
21
|
+
remove_model :user
|
22
|
+
end
|
23
|
+
|
24
|
+
after :each do
|
25
|
+
remove_model :user
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should configure 'one_role' strategy" do
|
29
|
+
create_model :user do
|
30
|
+
'# content'
|
31
|
+
end
|
32
|
+
with_generator do |g|
|
33
|
+
arguments = "User --strategy one_role --roles admin user"
|
34
|
+
puts "arguments: #{arguments}"
|
35
|
+
g.run_generator arguments.args
|
36
|
+
root_dir.should have_model :user do |clazz|
|
37
|
+
clazz.should include_module 'Roles::ActiveRecord'
|
38
|
+
clazz.should have_call :valid_roles_are, :args => ':admin, :guest, :user'
|
39
|
+
clazz.should have_call :strategy, :args => ":one_role"
|
40
|
+
end
|
41
|
+
|
42
|
+
root_dir.should have_model :role do |clazz|
|
43
|
+
clazz.should have_call :validates, :args => ':name, :uniqueness => true'
|
44
|
+
clazz.should have_call :has_many, :args => ':users'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 4
|
8
|
+
- 0
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Kristian Mandrup
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-25 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -337,18 +337,21 @@ extensions: []
|
|
337
337
|
|
338
338
|
extra_rdoc_files:
|
339
339
|
- LICENSE
|
340
|
-
- README.
|
340
|
+
- README.textile
|
341
341
|
files:
|
342
342
|
- .document
|
343
343
|
- .rspec
|
344
344
|
- Gemfile
|
345
345
|
- LICENSE
|
346
|
-
- README.
|
346
|
+
- README.textile
|
347
347
|
- Rakefile
|
348
348
|
- VERSION
|
349
349
|
- config/database.yml
|
350
350
|
- development.sqlite3
|
351
351
|
- lib/generators/active_record/roles/roles_generator.rb
|
352
|
+
- lib/generators/active_record/roles/templates/many_roles/role.rb
|
353
|
+
- lib/generators/active_record/roles/templates/many_roles/user_role.rb
|
354
|
+
- lib/generators/active_record/roles/templates/one_role/role.rb
|
352
355
|
- lib/generators/active_record/roles_migration/roles_migration_generator.rb
|
353
356
|
- lib/generators/active_record/roles_migration/templates/add_admin_flag_strategy.erb
|
354
357
|
- lib/generators/active_record/roles_migration/templates/add_many_roles_strategy.erb
|
@@ -357,7 +360,9 @@ files:
|
|
357
360
|
- lib/generators/active_record/roles_migration/templates/add_roles_mask_strategy.erb
|
358
361
|
- lib/roles_active_record.rb
|
359
362
|
- lib/roles_active_record/base.rb
|
363
|
+
- lib/roles_active_record/many_roles.rb
|
360
364
|
- lib/roles_active_record/namespaces.rb
|
365
|
+
- lib/roles_active_record/one_role.rb
|
361
366
|
- lib/roles_active_record/role.rb
|
362
367
|
- lib/roles_active_record/strategy.rb
|
363
368
|
- lib/roles_active_record/strategy/multi.rb
|
@@ -370,7 +375,6 @@ files:
|
|
370
375
|
- lib/roles_active_record/strategy/single/role_string.rb
|
371
376
|
- lib/views/_multi_role_selector.erb.html
|
372
377
|
- lib/views/_single_role_selector.erb.html
|
373
|
-
- logging.log
|
374
378
|
- roles_active_record.gemspec
|
375
379
|
- sandbox/Rakefile
|
376
380
|
- sandbox/add_role_to_users_migration.erb
|
@@ -396,13 +400,15 @@ files:
|
|
396
400
|
- spec/migrations/role_string/002_add_role_string_strategy.rb
|
397
401
|
- spec/migrations/roles_mask/002_add_roles_mask_strategy.rb
|
398
402
|
- spec/migrations/users/001_create_users.rb
|
399
|
-
- spec/roles_active_record/generators/
|
403
|
+
- spec/roles_active_record/generators/admin_flag_gen_spec.rb
|
404
|
+
- spec/roles_active_record/generators/many_roles_gen_spec.rb
|
405
|
+
- spec/roles_active_record/generators/migration_generator_spec.rb
|
406
|
+
- spec/roles_active_record/generators/one_role_gen_spec.rb
|
400
407
|
- spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb
|
401
408
|
- spec/roles_active_record/generators/roles_migration/many_roles_spec.rb
|
402
409
|
- spec/roles_active_record/generators/roles_migration/one_role_spec.rb
|
403
410
|
- spec/roles_active_record/generators/roles_migration/role_string_spec.rb
|
404
411
|
- spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb
|
405
|
-
- spec/roles_active_record/generators/setup_generator_spec.rb
|
406
412
|
- spec/roles_active_record/strategy/api.rb
|
407
413
|
- spec/roles_active_record/strategy/api_examples.rb
|
408
414
|
- spec/roles_active_record/strategy/multi/many_roles_spec.rb
|
@@ -414,14 +420,6 @@ files:
|
|
414
420
|
- spec/roles_active_record/strategy/single/role_string_spec.rb
|
415
421
|
- spec/roles_active_record/strategy/user_setup.rb
|
416
422
|
- spec/spec_helper.rb
|
417
|
-
- tmp/rails/app/models/user.rb
|
418
|
-
- tmp/rails/config/routes.rb
|
419
|
-
- tmp/rails/db/migrations/20100912101428_add_admin_flag_strategy.rb
|
420
|
-
- tmp/rails/db/migrations/20100912101429_remove_admin_flag_strategy.rb
|
421
|
-
- tmp/rails/db/migrations/20100912105055_add_many_roles_strategy.rb
|
422
|
-
- tmp/rails/db/migrations/20100912105323_add_one_role_strategy.rb
|
423
|
-
- tmp/rails/db/migrations/20100912110044_add_role_string_strategy.rb
|
424
|
-
- tmp/rails/db/migrations/20100912110249_add_roles_mask_strategy.rb
|
425
423
|
has_rdoc: true
|
426
424
|
homepage: http://github.com/kristianmandrup/roles_active_record
|
427
425
|
licenses: []
|
@@ -467,13 +465,15 @@ test_files:
|
|
467
465
|
- spec/migrations/role_string/002_add_role_string_strategy.rb
|
468
466
|
- spec/migrations/roles_mask/002_add_roles_mask_strategy.rb
|
469
467
|
- spec/migrations/users/001_create_users.rb
|
470
|
-
- spec/roles_active_record/generators/
|
468
|
+
- spec/roles_active_record/generators/admin_flag_gen_spec.rb
|
469
|
+
- spec/roles_active_record/generators/many_roles_gen_spec.rb
|
470
|
+
- spec/roles_active_record/generators/migration_generator_spec.rb
|
471
|
+
- spec/roles_active_record/generators/one_role_gen_spec.rb
|
471
472
|
- spec/roles_active_record/generators/roles_migration/admin_flag_spec.rb
|
472
473
|
- spec/roles_active_record/generators/roles_migration/many_roles_spec.rb
|
473
474
|
- spec/roles_active_record/generators/roles_migration/one_role_spec.rb
|
474
475
|
- spec/roles_active_record/generators/roles_migration/role_string_spec.rb
|
475
476
|
- spec/roles_active_record/generators/roles_migration/roles_mask_spec.rb
|
476
|
-
- spec/roles_active_record/generators/setup_generator_spec.rb
|
477
477
|
- spec/roles_active_record/strategy/api.rb
|
478
478
|
- spec/roles_active_record/strategy/api_examples.rb
|
479
479
|
- spec/roles_active_record/strategy/multi/many_roles_spec.rb
|
data/README.markdown
DELETED
@@ -1,191 +0,0 @@
|
|
1
|
-
# Roles for Active Record
|
2
|
-
|
3
|
-
An Active Record implementation of [roles generic](http://github.com/kristianmandrup/roles_generic)
|
4
|
-
|
5
|
-
## Install
|
6
|
-
|
7
|
-
<code>gem install roles_active_record</code>
|
8
|
-
|
9
|
-
## Update!
|
10
|
-
|
11
|
-
Now implements the [roles generic](http://github.com/kristianmandrup/roles_generic) Roles API
|
12
|
-
It also implements the following Role strategies:
|
13
|
-
|
14
|
-
* admin_flag
|
15
|
-
* many_roles
|
16
|
-
* one_role
|
17
|
-
* roles_mask
|
18
|
-
* role_string
|
19
|
-
|
20
|
-
## Rails generator
|
21
|
-
|
22
|
-
Will create admin and guest roles by default
|
23
|
-
|
24
|
-
<code>$ rails g active_record:roles User --strategy admin_flag --roles admin guest</code>
|
25
|
-
|
26
|
-
## Usage
|
27
|
-
|
28
|
-
Example: admin_flag Role strategy - generate migrations and model files
|
29
|
-
|
30
|
-
<code>$ rails g active_record:roles User admin_flag</code>
|
31
|
-
|
32
|
-
Example: admin_flag Role strategy - generate migrations only
|
33
|
-
|
34
|
-
<code>$ rails g active_record:roles_migration User admin_flag</code>
|
35
|
-
|
36
|
-
## Role strategies
|
37
|
-
|
38
|
-
The library comes with the following role strategies built-in:
|
39
|
-
|
40
|
-
Single role:
|
41
|
-
|
42
|
-
* admin_flag
|
43
|
-
* role_string
|
44
|
-
* one_role
|
45
|
-
|
46
|
-
Multi role:
|
47
|
-
|
48
|
-
* many_roles
|
49
|
-
* roles_mask
|
50
|
-
|
51
|
-
_Note_ The strategies *one_role* and *many_roles* both use a separate Role model (roles table). The others use an inline strategy with an attribute in the User model.
|
52
|
-
|
53
|
-
### Admin flag
|
54
|
-
|
55
|
-
Boolean *admin_flag* on User to indicate if user role is admin or normal user
|
56
|
-
|
57
|
-
### Role string
|
58
|
-
|
59
|
-
String *role_string* on User that names the role
|
60
|
-
|
61
|
-
### One role
|
62
|
-
|
63
|
-
*role_id* relation to *id* of *Roles* table that contain all valid roles
|
64
|
-
|
65
|
-
### Many roles
|
66
|
-
|
67
|
-
*role_id* relation to *UserRoles* table that is the join table that joins a user to multiple roles in the *Roles* tables.
|
68
|
-
|
69
|
-
### Roles mask
|
70
|
-
|
71
|
-
*roles_mask* integer that as a bitmask indicating which roles out of a set of valid roles that the user has.
|
72
|
-
|
73
|
-
Note: The following examples use RSpec to demonstrate usage scenarios.
|
74
|
-
|
75
|
-
## Example : admin_flag
|
76
|
-
|
77
|
-
<pre>use_roles_strategy :admin_flag
|
78
|
-
|
79
|
-
class User < ActiveRecord::Base
|
80
|
-
include Roles::ActiveRecord
|
81
|
-
|
82
|
-
strategy :admin_flag, :default
|
83
|
-
valid_roles_are :admin, :guest
|
84
|
-
end
|
85
|
-
</pre>
|
86
|
-
|
87
|
-
## Example : role_string
|
88
|
-
|
89
|
-
<pre>use_roles_strategy :role_string
|
90
|
-
|
91
|
-
class User < ActiveRecord::Base
|
92
|
-
include Roles::ActiveRecord
|
93
|
-
|
94
|
-
strategy :role_string, :default
|
95
|
-
valid_roles_are :admin, :guest
|
96
|
-
end
|
97
|
-
</pre>
|
98
|
-
|
99
|
-
## Example : one_role
|
100
|
-
|
101
|
-
<pre>use_roles_strategy :one_role
|
102
|
-
class User < ActiveRecord::Base
|
103
|
-
include Roles::ActiveRecord
|
104
|
-
|
105
|
-
strategy :one_role, :default
|
106
|
-
role_class :role
|
107
|
-
|
108
|
-
valid_roles_are :admin, :guest
|
109
|
-
end
|
110
|
-
</pre>
|
111
|
-
|
112
|
-
## Example : many_roles
|
113
|
-
|
114
|
-
<pre>use_roles_strategy :many_roles
|
115
|
-
class User < ActiveRecord::Base
|
116
|
-
include Roles::ActiveRecord
|
117
|
-
|
118
|
-
strategy :many_roles, :default
|
119
|
-
role_class :role
|
120
|
-
|
121
|
-
valid_roles_are :admin, :guest
|
122
|
-
end
|
123
|
-
</pre>
|
124
|
-
|
125
|
-
## Example : roles_mask
|
126
|
-
|
127
|
-
<pre>use_roles_strategy :roles_mask
|
128
|
-
|
129
|
-
class User < ActiveRecord::Base
|
130
|
-
include Roles::ActiveRecord
|
131
|
-
|
132
|
-
strategy :roles_mask, :default
|
133
|
-
valid_roles_are :admin, :guest
|
134
|
-
end
|
135
|
-
|
136
|
-
</pre>
|
137
|
-
|
138
|
-
## Rails generators
|
139
|
-
|
140
|
-
The library comes with a Rails 3 generator that lets you populate a user model with a given role strategy
|
141
|
-
The following role strategies are included by default. Add your own by adding extra files inside the strategy folder, one file for each role strategy is recommended.
|
142
|
-
|
143
|
-
* admin_flag
|
144
|
-
* role_string
|
145
|
-
* roles_mask
|
146
|
-
* one_role
|
147
|
-
* many_roles
|
148
|
-
|
149
|
-
|
150
|
-
### Generators
|
151
|
-
|
152
|
-
* active_record:roles
|
153
|
-
* active_record:roles_migration
|
154
|
-
|
155
|
-
*Roles*
|
156
|
-
|
157
|
-
Apply :admin_flag Role strategy to User model using default roles :admin and :guest (default)
|
158
|
-
|
159
|
-
<code>$ rails g active_record:roles User --strategy admin_flag</code>
|
160
|
-
|
161
|
-
Apply :admin_flag Role strategy to User model using default roles and extra role :author
|
162
|
-
|
163
|
-
<code>$ rails g active_record:roles_migration User --strategy admin_flag --roles author</code>
|
164
|
-
|
165
|
-
Apply :one_role Role strategy to User model without default roles, only with roles :user, :special and :editor
|
166
|
-
|
167
|
-
<code>$ rails g active_record:roles_migration User --strategy one_role --roles user special editor --no-default-roles</code>
|
168
|
-
|
169
|
-
*Roles Migration*
|
170
|
-
|
171
|
-
Example: admin_flag Role strategy - generate migrations and model files
|
172
|
-
|
173
|
-
<code>$ rails g active_record:roles_migration User --strategy admin_flag</code>
|
174
|
-
|
175
|
-
Create reverse migration
|
176
|
-
|
177
|
-
<code>$ rails g active_record:roles_migration User --strategy admin_flag --reverse</code>
|
178
|
-
|
179
|
-
## Note on Patches/Pull Requests
|
180
|
-
|
181
|
-
* Fork the project.
|
182
|
-
* Make your feature addition or bug fix.
|
183
|
-
* Add tests for it. This is important so I don't break it in a
|
184
|
-
future version unintentionally.
|
185
|
-
* Commit, do not mess with rakefile, version, or history.
|
186
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
187
|
-
* Send me a pull request. Bonus points for topic branches.
|
188
|
-
|
189
|
-
## Copyright
|
190
|
-
|
191
|
-
Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.
|
data/logging.log
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
[Rails::Assist::Logging]
|
2
|
-
apply_role_strategy for : admin_flag in model User
|
3
|
-
[Rails::Assist::Logging]
|
4
|
-
apply_role_strategy for : one_role in model User
|
5
|
-
[Rails::Assist::Logging]
|
6
|
-
apply_role_strategy for : admin_flag in model User
|
7
|
-
[Rails::Assist::Logging]
|
8
|
-
apply_role_strategy for : admin_flag in model User
|
9
|
-
[Rails::Assist::Logging]
|
10
|
-
apply_role_strategy for : one_role in model User
|
11
|
-
[Rails::Assist::Logging]
|
12
|
-
apply_role_strategy for : admin_flag in model User
|
13
|
-
[Rails::Assist::Logging]
|
14
|
-
apply_role_strategy for : admin_flag in model User
|
15
|
-
[Rails::Assist::Logging]
|
16
|
-
apply_role_strategy for : admin_flag in model User
|
17
|
-
[Rails::Assist::Logging]
|
18
|
-
apply_role_strategy for : admin_flag in model User
|
19
|
-
[Rails::Assist::Logging]
|
20
|
-
apply_role_strategy for : admin_flag in model User
|
21
|
-
[Rails::Assist::Logging]
|
22
|
-
apply_role_strategy for : admin_flag in model User
|
23
|
-
[Rails::Assist::Logging]
|
24
|
-
apply_role_strategy for : admin_flag in model User
|
25
|
-
[Rails::Assist::Logging]
|
26
|
-
apply_role_strategy for : one_role in model User
|
data/tmp/rails/config/routes.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
class AddManyRolesStrategy < ActiveRecord::Migration
|
2
|
-
class << self
|
3
|
-
|
4
|
-
def up
|
5
|
-
create_roles
|
6
|
-
create_user_roles
|
7
|
-
end
|
8
|
-
|
9
|
-
def down
|
10
|
-
drop_roles
|
11
|
-
drop_user_roles
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
|
-
def create_user_roles
|
17
|
-
create_table :user_roles do |t|
|
18
|
-
t.integer :user_id
|
19
|
-
t.integer :role_id
|
20
|
-
t.timestamps
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def drop_user_roles
|
25
|
-
drop_table :user_roles
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
def create_roles
|
30
|
-
create_table :roles do |t|
|
31
|
-
t.string :name
|
32
|
-
t.timestamps
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def drop_roles
|
37
|
-
drop_table :roles
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
class AddOneRoleStrategy < ActiveRecord::Migration
|
2
|
-
class << self
|
3
|
-
|
4
|
-
def up
|
5
|
-
create_roles
|
6
|
-
add_user_role
|
7
|
-
end
|
8
|
-
|
9
|
-
def down
|
10
|
-
drop_roles
|
11
|
-
remove_user_role
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
|
-
def add_user_role
|
17
|
-
change_table :users do |t|
|
18
|
-
t.integer :role_id
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def remove_user_role
|
23
|
-
change_table :users do |t|
|
24
|
-
t.remove :role_id
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
def create_roles
|
30
|
-
create_table :roles do |t|
|
31
|
-
t.string :name
|
32
|
-
t.timestamps
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def drop_roles
|
37
|
-
drop_table :roles
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|