denormalize_mm 0.2.3 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OWNlOGQ0ZWVjNTM3ZmIxY2MyNTkxMjI2MzFkZWI3N2ZjZjEyMTBiMA==
4
+ ODJjYmQwYmVhMWQxYzk5N2YxMjlmOTJjNDdlYTE1N2ZlOGE5MDk3Ng==
5
5
  data.tar.gz: !binary |-
6
- OTFlNjQxZWQ0MmJiYTY4YTUwOGVlYmY3ZjQzYjRiOThmZGE0YzY5Zg==
6
+ OWMxNGM2MGJmMGRlMzhhMWFhMGFkNTYzMmViNDIyOGVhOTdlMjhjMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjFmYjVmYWJiZTc0ZWU0YzIxMTE4NDRhM2E5MjE3YmYzYThiMmYzZGU0MzBi
10
- YmQ5ZTgzNDE5YTk4ODMzNjI2ZDg2MjY2MGQ5ZjQyN2NiZmRlYzBkMzc3MWFm
11
- NjNiMzAyYjM4Zjc2Y2NjNDRiZWYxNDlkMzQ2NjZkNzIwZTZmNTg=
9
+ NDJlNTg1MGY3YTJjM2I3ODQ2NjQwZmEwOTFlM2Y3Y2FiOGFjZmI3MDJjM2E4
10
+ NGM1MjA1Zjk3Njc5YTY4MjhmN2QyYWJhMGM1MjlmMGI1NTI5OWQzOTAwMDBj
11
+ YTk2OGJhMDUyMmZiNmY3ZWVmZmY3OWZmMDYyMjdmOTYyZDliYjE=
12
12
  data.tar.gz: !binary |-
13
- OGQ5NTQ4OWVkYTRjYzIzZGU5YjhlMDBhNjIzODFjMmU0ZDExYTNhYmZjZjJl
14
- Mzk1YmExYjIyOGJkZjYxYzg2MzFlODZiMGUwMjA2NWVlNTE2YjQ3NmE2NzQx
15
- M2RiNzkzMjNiYjdlZWUzZDFiYzY5MjFlYmUyZDIxMDc2NzI1OGY=
13
+ MTNiNjFkOGJjZDBjYWNlOWY2YThhZjFkNjgyMTZlYmQ5OTljZGEyN2IyODM1
14
+ Y2I4ZjlkZjk1M2I2ZWZjNjlhNjkwZmY1ODI5NDkxNzM4YjA1MzFlOGE2NDAy
15
+ ZjhmOWM4MmI5MzZiNDFlNjI0ZWU2MDcxODhhZWU1YTViZGFmZGI=
@@ -1,6 +1,12 @@
1
1
  require 'mongo_mapper'
2
2
 
3
3
  module MongoMapper::Denormalization
4
+ if defined?(ActiveModel::Validations::ClassMethods::VALID_OPTIONS_FOR_VALIDATE)
5
+ VALID_OPTIONS_FOR_VALIDATE = ActiveModel::Validations::ClassMethods::VALID_OPTIONS_FOR_VALIDATE
6
+ else
7
+ VALID_OPTIONS_FOR_VALIDATE = [:on, :if, :unless, :prepend].freeze
8
+ end
9
+
4
10
  def self.included(mod)
5
11
  mod.extend(MongoMapper::Denormalization::ClassMethods)
6
12
  end
@@ -32,13 +38,16 @@ module MongoMapper::Denormalization
32
38
  association = association.to_sym
33
39
  field = field.to_sym
34
40
 
35
- validation_method = options[:on] || :before_validation
41
+ validation_method = options[:method] || :before_validation
42
+ validation_method_params = options.slice(*VALID_OPTIONS_FOR_VALIDATE)
43
+
36
44
  source_field_code = options[:source_field] || :"#{association}.#{field}"
37
45
  target_field_code = options[:target_field] || :"#{association}_#{field}"
38
46
  is_association = options[:is_association]
47
+ reflect_updates = options.has_key?(:reflect_updates) ? options[:reflect_updates] : true
39
48
 
40
- denormalize_on_validation(association, field, validation_method, source_field_code, target_field_code)
41
- denormalize_on_update(association, field, is_association, target_field_code)
49
+ denormalize_on_validation(association, field, validation_method, source_field_code, target_field_code, validation_method_params)
50
+ denormalize_on_update(association, field, is_association, target_field_code) if reflect_updates
42
51
  end
43
52
 
44
53
  private
@@ -82,12 +91,12 @@ module MongoMapper::Denormalization
82
91
  CODE
83
92
  end
84
93
 
85
- def denormalize_on_validation(association, field, validation_method, source_field_code, target_field_code)
94
+ def denormalize_on_validation(association, field, validation_method, source_field_code, target_field_code, validation_method_params={})
86
95
  validation_method_name = :"denormalize_#{association}_#{field}"
87
96
 
88
97
  # denormalize the field
89
98
  self.class_eval <<-CODE, __FILE__, __LINE__
90
- #{validation_method} :#{validation_method_name}
99
+ #{validation_method} :#{validation_method_name}, #{validation_method_params.inspect}
91
100
 
92
101
  def #{validation_method_name}
93
102
  if self.#{association}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: denormalize_mm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Taylor
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-20 00:00:00.000000000 Z
12
+ date: 2015-03-26 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Helpers to denormalize fields easily on mongo mapper models
15
15
  email: scott@railsnewbie.com