slim_form_object 1.0.6 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10f6c5f47c07161c3e2d610f4094fdfb648cdfbf
4
- data.tar.gz: 95fe4c99fc97171eabe7abbbeeff5a15de41f8bd
3
+ metadata.gz: d2aed3c55c37bbeb4b8f1fa75688bcbf70eb6f6f
4
+ data.tar.gz: cba65de38298064fcd60551819b2646b1d1b5026
5
5
  SHA512:
6
- metadata.gz: 3a00c88bf1314247263aa0bda2c615090ea4b61e117ce2c812bd349804b3ecb7674709c8878d893726b1997d3ebbe4981aab55f38c7843fd074d8cb093d1a7bf
7
- data.tar.gz: a5c3def15d7c99d6a2fa1a6cb3bb760ba82dac27289bb7c4373bf36e719d441373166a1638c7317fae6beb27f6b779cc040dd9f63a1df5f3fb27dbc2793a9c4c
6
+ metadata.gz: 3f32e57070632547c8670b7a23f9d7016384411e059fbe954a8578436c9af18a0e7f0edcd407c2c17b3f431bd867a0c8c49cf206f45f5f23bd8fa062890d4707
7
+ data.tar.gz: d3038714911637b3f38a4eddc1daa7873481c2a2a23938f6472a5eba12f3c8d4b1b5b74c563b46eafcaa2e6bd74e27a965015d3a077eff77b93be63f313d1948
@@ -8,12 +8,12 @@ module SlimFormObject
8
8
  @form_object = form_object
9
9
  @params = form_object.params
10
10
  @array_all_objects_for_save = form_object.array_all_objects_for_save
11
- @not_save_this_model = form_object.not_save_this_model
11
+ # @not_save_this_model = form_object.not_save_this_model
12
12
  @result_hash_updated_objects = {objects: [], nested_objects: {}}
13
13
  end
14
14
 
15
15
  def apply_parameters
16
- filter_not_save_objects
16
+ # filter_not_save_objects
17
17
  update_objects_attributes
18
18
  make_nested_objects
19
19
 
@@ -22,11 +22,11 @@ module SlimFormObject
22
22
 
23
23
  private
24
24
 
25
- def filter_not_save_objects
26
- array_all_objects_for_save.reject do |object|
27
- not_save_this_model.include?(object.class)
28
- end
29
- end
25
+ # def filter_not_save_objects
26
+ # array_all_objects_for_save.reject do |object|
27
+ # not_save_this_model.include?(object.class)
28
+ # end
29
+ # end
30
30
 
31
31
  # STANDART OBJECTS
32
32
 
@@ -137,7 +137,6 @@ module ActionView
137
137
 
138
138
  def value(object)
139
139
  method_name = sfo_get_method_name(@method_name)
140
- # byebug
141
140
  object.public_send method_name if object
142
141
  end
143
142
 
@@ -1,6 +1,4 @@
1
1
  module HelperMethods
2
- private
3
-
4
2
  def snake(string)
5
3
  string = string.to_s
6
4
  string.gsub!(/((\w)([A-Z]))/,'\2_\3')
@@ -16,15 +16,10 @@ module SlimFormObject
16
16
  end
17
17
  alias_method :init_models, :init_single_models
18
18
 
19
- def not_save_this_model(*args)
19
+ def not_save_empty_object_for(*args)
20
+ args.each { |model| raise "#{model.to_s} - type is not a Class" if model.class != Class }
20
21
  self.instance_eval do
21
- define_method(:not_save_this_model) { args }
22
- end
23
- end
24
-
25
- def force_save_if_all_attr_is_nil(*args)
26
- self.instance_eval do
27
- define_method(:force_save_if_all_attr_is_nil) { args }
22
+ define_method(:array_models_which_not_save_if_empty) { args }
28
23
  end
29
24
  end
30
25
 
@@ -101,8 +96,7 @@ module SlimFormObject
101
96
  end
102
97
 
103
98
  def check_array_settings_with_settings
104
- define_singleton_method(:not_save_this_model) { [] } unless respond_to?(:not_save_this_model)
105
- define_singleton_method(:force_save_if_all_attr_is_nil) { [] } unless respond_to?(:force_save_if_all_attr_is_nil)
99
+ define_singleton_method(:array_models_which_not_save_if_empty) { [] } unless respond_to?(:array_models_which_not_save_if_empty)
106
100
  end
107
101
 
108
102
  end
@@ -2,22 +2,34 @@ module SlimFormObject
2
2
  class Validator
3
3
  include ::HelperMethods
4
4
 
5
- attr_reader :form_object, :params, :hash_objects_for_save
5
+ attr_reader :form_object, :params, :hash_objects_for_save, :array_models_which_not_save_if_empty
6
6
 
7
7
  def initialize(form_object)
8
- @form_object = form_object
9
- @params = form_object.params
10
- @hash_objects_for_save = form_object.hash_objects_for_save
8
+ @form_object = form_object
9
+ @params = form_object.params
10
+ @hash_objects_for_save = form_object.hash_objects_for_save
11
+ @array_models_which_not_save_if_empty = form_object.array_models_which_not_save_if_empty
11
12
  end
12
13
 
13
14
  def validate_form_object
14
- filter_nil_objects
15
+ filter_models
16
+ validation_objects
17
+ validation_nested_objects
18
+ end
19
+
20
+ def valid_model_for_save?(object)
21
+ true
22
+ end
23
+
24
+ private
15
25
 
26
+ def validation_objects
16
27
  hash_objects_for_save[:objects].each do |object|
17
- next if all_attributes_is_nil?(object)
18
28
  set_errors( snake(object.class), object.errors ) unless object.valid?
19
29
  end
30
+ end
20
31
 
32
+ def validation_nested_objects
21
33
  hash_objects_for_save[:nested_objects].keys.each do |snake_model_name|
22
34
  hash_objects_for_save[:nested_objects][snake_model_name].each do |object|
23
35
  set_errors( snake(object.class), object.errors ) unless object.valid?
@@ -25,15 +37,13 @@ module SlimFormObject
25
37
  end
26
38
  end
27
39
 
28
- def valid_model_for_save?(object)
29
- true
40
+ def filter_models
41
+ filter_nil_objects
30
42
  end
31
43
 
32
- private
33
-
34
44
  def filter_nil_objects
35
45
  hash_objects_for_save[:objects].reject! do |object|
36
- all_attributes_is_nil?(object)
46
+ !save_if_object_is_empty?(object)
37
47
  end
38
48
  end
39
49
 
@@ -44,6 +54,10 @@ module SlimFormObject
44
54
  true
45
55
  end
46
56
 
57
+ def save_if_object_is_empty?(object)
58
+ !(all_attributes_is_nil?(object) and array_models_which_not_save_if_empty.include?(object.class))
59
+ end
60
+
47
61
  def set_errors(object_name, object_errors)
48
62
  object_errors.each do |attribute, message|
49
63
  form_object.errors.add(object_name, { attribute => message})
@@ -1,3 +1,3 @@
1
1
  module SlimFormObject
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim_form_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - woodcrust
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-25 00:00:00.000000000 Z
11
+ date: 2017-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel