has_scope 0.4 → 0.4.1

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 (4) hide show
  1. data/README.rdoc +6 -13
  2. data/Rakefile +1 -1
  3. data/lib/has_scope.rb +10 -11
  4. metadata +2 -2
data/README.rdoc CHANGED
@@ -22,7 +22,7 @@ Now, if you want to apply them to an specific resource, you just need to call <t
22
22
  has_scope :by_degree
23
23
 
24
24
  def index
25
- @graduations = apply_scopes(Graduations).all
25
+ @graduations = apply_scopes(Graduation).all
26
26
  end
27
27
  end
28
28
 
@@ -54,26 +54,19 @@ If you want it as plugin, just do:
54
54
 
55
55
  HasScope supports several options:
56
56
 
57
- * <tt>:type</tt> - Checks the type of the parameter sent. If set to :boolean
58
- it just calls the named scope, without any argument. By default,
59
- it does not allow hashes or arrays to be given, except if type
60
- :hash or :array are set.
57
+ * <tt>:type</tt> - Checks the type of the parameter sent. If set to :boolean it just calls the named scope, without any argument. By default, it does not allow hashes or arrays to be given, except if type :hash or :array are set.
61
58
 
62
59
  * <tt>:only</tt> - In which actions the scope is applied.
63
60
 
64
61
  * <tt>:except</tt> - In which actions the scope is not applied.
65
62
 
66
- * <tt>:as</tt> - The key in the params hash expected to find the scope.
67
- Defaults to the scope name.
63
+ * <tt>:as</tt> - The key in the params hash expected to find the scope. Defaults to the scope name.
68
64
 
69
- * <tt>:if</tt> - Specifies a method, proc or string to call to determine
70
- if the scope should apply
65
+ * <tt>:if</tt> - Specifies a method, proc or string to call to determine if the scope should apply.
71
66
 
72
- * <tt>:unless</tt> - Specifies a method, proc or string to call to determine
73
- if the scope should NOT apply.
67
+ * <tt>:unless</tt> - Specifies a method, proc or string to call to determine if the scope should NOT apply.
74
68
 
75
- * <tt>:default</tt> - Default value for the scope. Whenever supplied the scope
76
- is always called.
69
+ * <tt>:default</tt> - Default value for the scope. Whenever supplied the scope is always called.
77
70
 
78
71
  * <tt>:allow_blank</tt> - Blank values are not sent to scopes by default. Set to true to overwrite.
79
72
 
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ begin
27
27
  require 'jeweler'
28
28
  Jeweler::Tasks.new do |s|
29
29
  s.name = "has_scope"
30
- s.version = "0.4"
30
+ s.version = "0.4.1"
31
31
  s.summary = "Maps controller filters to your resource scopes"
32
32
  s.email = "contact@plataformatec.com.br"
33
33
  s.homepage = "http://github.com/plataformatec/has_scope"
data/lib/has_scope.rb CHANGED
@@ -12,9 +12,7 @@ module HasScope
12
12
  base.class_eval do
13
13
  extend ClassMethods
14
14
  helper_method :current_scopes
15
-
16
15
  class_inheritable_hash :scopes_configuration, :instance_writer => false
17
- self.scopes_configuration ||= {}
18
16
  end
19
17
  end
20
18
 
@@ -63,16 +61,13 @@ module HasScope
63
61
  def has_scope(*scopes, &block)
64
62
  options = scopes.extract_options!
65
63
  options.symbolize_keys!
66
-
67
- if options.delete(:boolean)
68
- options[:type] ||= :boolean
69
- ActiveSupport::Deprecation.warn(":boolean => true is deprecated, use :type => :boolean instead", caller)
70
- end
71
64
  options.assert_valid_keys(:type, :only, :except, :if, :unless, :default, :as, :allow_blank)
72
65
 
73
66
  options[:only] = Array(options[:only])
74
67
  options[:except] = Array(options[:except])
75
68
 
69
+ self.scopes_configuration ||= {}
70
+
76
71
  scopes.each do |scope|
77
72
  self.scopes_configuration[scope] ||= { :as => scope, :type => :default, :block => block }
78
73
  self.scopes_configuration[scope].merge!(options)
@@ -94,6 +89,8 @@ module HasScope
94
89
  # end
95
90
  #
96
91
  def apply_scopes(target)
92
+ return target unless scopes_configuration
93
+
97
94
  self.scopes_configuration.each do |scope, options|
98
95
  next unless apply_scope_to_action?(options)
99
96
  key = options[:as]
@@ -119,7 +116,7 @@ module HasScope
119
116
  if type == :boolean
120
117
  current_scopes[key] = TRUE_VALUES.include?(value)
121
118
  elsif ALLOWED_TYPES[type].none?{ |klass| value.is_a?(klass) }
122
- raise "Expected type :#{type} in params[:#{key}], got :#{value.class}"
119
+ raise "Expected type :#{type} in params[:#{key}], got #{value.class}"
123
120
  else
124
121
  current_scopes[key] = value
125
122
  end
@@ -127,10 +124,12 @@ module HasScope
127
124
 
128
125
  # Apply the scope taking into account its type.
129
126
  def apply_scope_by_type(type, scope, target, value, block) #:nodoc:
130
- return target if type == :boolean && value == false
131
-
132
127
  if type == :boolean
133
- block ? block.call(self, target) : target.send(scope)
128
+ if value
129
+ block ? block.call(self, target) : target.send(scope)
130
+ else
131
+ target
132
+ end
134
133
  else
135
134
  block ? block.call(self, target, value) : target.send(scope, value)
136
135
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_scope
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.4"
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jos\xC3\xA9 Valim"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-22 00:00:00 +01:00
12
+ date: 2010-01-29 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15