roles_active_record 0.4.3 → 0.4.4

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
@@ -26,12 +26,12 @@ module ActiveRecord
26
26
  logger.debug "apply_role_strategy for : #{strategy} in model #{name}"
27
27
 
28
28
  if !valid_strategy?
29
- say "Strategy '#{strategy}' is not valid, at least not for Active Record"
29
+ say "Strategy '#{strategy}' is not valid, at least not for Active Record", :red
30
30
  return
31
31
  end
32
32
 
33
33
  if !has_model? :user
34
- say "Could not apply roles strategy to #{name} model since the model file was not found"
34
+ say "Could not apply roles strategy to #{name} model since the model file was not found", :red
35
35
  return
36
36
  end
37
37
 
@@ -50,7 +50,9 @@ module ActiveRecord
50
50
  protected
51
51
 
52
52
  extend Rails3::Assist::UseMacro
53
+
53
54
  use_orm :active_record
55
+
54
56
  include Rails3::Assist::BasicLogger
55
57
 
56
58
  def copy_role_models
@@ -61,7 +61,7 @@ module ActiveRecord
61
61
  end
62
62
 
63
63
  def strategies
64
- [:admin_flag, :role_string, :one_role, :many_roles, :roles_mask]
64
+ [:admin_flag, :role_string, :one_role, :many_roles, :roles_mask]
65
65
  end
66
66
 
67
67
  def reverse?
@@ -4,7 +4,9 @@ module Roles::Base
4
4
  end
5
5
  end
6
6
 
7
- module Roles::ActiveRecord
7
+ module Roles::ActiveRecord
8
+ mattr_accessor :warnings_on
9
+
8
10
  def self.included(base)
9
11
  base.extend Roles::Base
10
12
  base.extend ClassMethods
@@ -38,24 +40,37 @@ module Roles::ActiveRecord
38
40
 
39
41
  # one_role reference
40
42
  if strategy_name == :one_role
41
- self.belongs_to :one_role, :foreign_key => 'role_id', :class_name => @role_class_name.to_s
43
+ self.belongs_to :one_role, :foreign_key => 'role_id', :class_name => role_class_name.to_s
42
44
  end
43
45
 
44
46
  # many_roles references
45
- if strategy_name == :many_roles
46
- user_roles_class = options[:user_roles_class] if options.kind_of? Hash
47
- user_roles_class ||= 'user_roles'
48
-
49
- instance_eval %{
50
- has_many :many_roles, :through => :#{user_roles_class}, :source => :#{@role_class_name.to_s.underscore}
51
- has_many :#{user_roles_class}
52
- }
47
+ if strategy_name == :many_roles
48
+ urc = user_roles_class options
49
+ instance_eval many_roles_stmt(urc)
53
50
  end
54
51
 
55
52
  set_role_strategy name, options
56
53
  end
57
54
 
58
55
  private
56
+
57
+ def many_roles_stmt urc
58
+ %{
59
+ has_many :many_roles, :through => :#{urc}, :source => :#{role_class_name.to_s.underscore}
60
+ has_many :#{urc}
61
+ }
62
+ end
63
+
64
+ def role_class_name options = {}
65
+ return @role_class_name if @role_class_name
66
+ return options[:role_class] if options.kind_of?(Hash) && options[:role_class]
67
+ 'Role'
68
+ end
69
+
70
+ def user_roles_class options
71
+ return options[:user_roles_class] if options.kind_of?(Hash) && options[:user_roles_class]
72
+ 'user_roles'
73
+ end
59
74
 
60
75
  def set_role_class strategy_name, options = {}
61
76
  @role_class_name = !options.kind_of?(Symbol) ? get_role_class(strategy_name, options) : default_role_class(strategy_name)
@@ -70,7 +85,7 @@ module Roles::ActiveRecord
70
85
  require "roles_active_record/#{strategy_name}"
71
86
  return ::Role
72
87
  end
73
- raise "Default Role class not defined"
88
+ raise "Default Role class not defined" if Roles::ActiveRecord.warnings_on
74
89
  end
75
90
 
76
91
  def get_role_class strategy_name, options
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{roles_active_record}
8
- s.version = "0.4.3"
8
+ s.version = "0.4.4"
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{2011-01-01}
12
+ s.date = %q{2011-01-04}
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 = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 3
9
- version: 0.4.3
8
+ - 4
9
+ version: 0.4.4
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: 2011-01-01 00:00:00 +01:00
17
+ date: 2011-01-04 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency