flattener 0.0.6 → 0.0.7

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.
@@ -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: