flattener 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,11 +2,12 @@ module Flattener
2
2
  class Base
3
3
 
4
4
  include ActiveModel::Validations
5
-
5
+ include ActiveModel::MassAssignmentSecurity
6
+
6
7
  extend Flattener
7
8
 
8
9
  def initialize attributes = {}
9
- attributes.each do |key, value|
10
+ sanitize_for_mass_assignment(attributes).each do |key, value|
10
11
  self.send("#{key}=", value)
11
12
  end
12
13
  end
@@ -56,7 +56,7 @@ module Flattener
56
56
  end
57
57
 
58
58
  def add_validator_method!
59
- if supports_validations?
59
+ if validations_are_supported?
60
60
  @klass.class_eval <<-CODE, __FILE__, __LINE__
61
61
  def #{validate_method_name}
62
62
  unless self.#{accessor_method_name}.blank?
@@ -120,13 +120,23 @@ module Flattener
120
120
  #{proxy_method_name}.#{name} = value
121
121
  end
122
122
  CODE
123
+ if mass_assignment_is_supported?
124
+ @klass.attr_accessible method_name.to_sym
125
+ end
123
126
  flattened_attrs[name] = method_name
124
127
  end
125
128
 
126
- def supports_validations?
127
- defined?(ActiveModel::Validations) && @klass.included_modules.include?(ActiveModel::Validations)
129
+ def mass_assignment_is_supported?
130
+ module_included?(ActiveModel::MassAssignmentSecurity)
131
+ end
132
+
133
+ def validations_are_supported?
134
+ module_included?(ActiveModel::Validations)
128
135
  end
129
136
 
137
+ def module_included?(m)
138
+ defined?(m) && @klass.included_modules.include?(m)
139
+ end
130
140
  end
131
141
 
132
142
  class NestedConfigurator < Configurator
@@ -1,3 +1,3 @@
1
1
  module Flattener
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -32,4 +32,11 @@ describe Flattener::Base do
32
32
  instance.should be_valid
33
33
  end
34
34
 
35
+ it "should omit other non faltted attributes sent" do
36
+ -> do
37
+ CustomerBuilder.new cuac: "like a duck"
38
+ end.should_not raise_error(NoMethodError)
39
+
40
+ end
41
+
35
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flattener
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &2153900160 !ruby/object:Gem::Requirement
16
+ requirement: &2151885260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153900160
24
+ version_requirements: *2151885260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &2153716040 !ruby/object:Gem::Requirement
27
+ requirement: &2151883960 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2153716040
35
+ version_requirements: *2151883960
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &2153424860 !ruby/object:Gem::Requirement
38
+ requirement: &2151882000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2153424860
46
+ version_requirements: *2151882000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: shoulda
49
- requirement: &2153231500 !ruby/object:Gem::Requirement
49
+ requirement: &2151879860 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2153231500
57
+ version_requirements: *2151879860
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-rspec
60
- requirement: &2153060140 !ruby/object:Gem::Requirement
60
+ requirement: &2151895060 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2153060140
68
+ version_requirements: *2151895060
69
69
  description: ! 'Allows to flat an object and his children (ActiveRecord based) into
70
70
  one level, so you can create them all without building a complex form. '
71
71
  email: