slim_form_object 1.0.2 → 1.0.3
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 +4 -4
- data/lib/slim_form_object/version.rb +1 -1
- metadata +5 -6
- data/lib/slim_form_object/tmp.rb +0 -297
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d794f46de8a64093a4e262e7656f2c0276d1d0c2
         | 
| 4 | 
            +
              data.tar.gz: 47a59625579728db477cd9a5017b1beb08b9bf3d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0aa2c73239db19ad87c8adf78f26b69c48ec47accd1af8b3feece70e71298635c4ee46f2baedd1bea3ec616fa98fc6b30c97881e20f9e284b07157f69254dd44
         | 
| 7 | 
            +
              data.tar.gz: 1270613ecd43269dfebfb8ec81922e99d738ae88f1f78652a74b2f7ff673b2a4f7191ea6c82cbc2799f31a43dd7006d6f47c6e49268b62936e91ff4d4829fbcb
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: slim_form_object
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - woodcrust
         | 
| @@ -16,28 +16,28 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - ">="
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 4.0.0
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 4.0.0
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: actionview
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 4.0.0
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 4.0.0
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: bundler
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -166,7 +166,6 @@ files: | |
| 166 166 | 
             
            - lib/slim_form_object/helpers.rb
         | 
| 167 167 | 
             
            - lib/slim_form_object/processing.rb
         | 
| 168 168 | 
             
            - lib/slim_form_object/saver.rb
         | 
| 169 | 
            -
            - lib/slim_form_object/tmp.rb
         | 
| 170 169 | 
             
            - lib/slim_form_object/validator.rb
         | 
| 171 170 | 
             
            - lib/slim_form_object/version.rb
         | 
| 172 171 | 
             
            - spec/db/database.yml
         | 
    
        data/lib/slim_form_object/tmp.rb
    DELETED
    
    | @@ -1,297 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
            # require 'byebug'
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            # module SlimFormObject
         | 
| 12 | 
            -
            #   class Base
         | 
| 13 | 
            -
            #     attr_accessor :params
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            #     def self.init_models(*args)
         | 
| 16 | 
            -
            #       self.instance_eval do
         | 
| 17 | 
            -
            #         define_method(:array_of_single_models) { args }
         | 
| 18 | 
            -
            #       end
         | 
| 19 | 
            -
            #       add_attributes(args)
         | 
| 20 | 
            -
            #     end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            #     alias_method :init_single_models, :init_models
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            #     def self.init_multiple_models(*args)
         | 
| 25 | 
            -
            #       self.instance_eval do
         | 
| 26 | 
            -
            #         define_method(:array_multiple_models) { args }
         | 
| 27 | 
            -
            #       end
         | 
| 28 | 
            -
            #       add_attributes(args)
         | 
| 29 | 
            -
            #     end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            #     def self.add_attributes(models)
         | 
| 32 | 
            -
            #       #acessors for model objects
         | 
| 33 | 
            -
            #       models.each{ |model| attr_accessor snake(model.to_s).to_sym }
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            #       #delegate attributes of models
         | 
| 36 | 
            -
            #       models.each do |model|
         | 
| 37 | 
            -
            #         model.column_names.each do |attr|
         | 
| 38 | 
            -
            #           delegate attr.to_sym, "#{attr}=".to_sym, to:     snake(model.to_s).to_sym,
         | 
| 39 | 
            -
            #                                                    prefix: true
         | 
| 40 | 
            -
            #         end
         | 
| 41 | 
            -
            #       end
         | 
| 42 | 
            -
            #     end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
            #     def self.set_model_name(name)
         | 
| 45 | 
            -
            #       define_method(:model_name) { ActiveModel::Name.new(self, nil, name) }
         | 
| 46 | 
            -
            #     end
         | 
| 47 | 
            -
            #     # def initializer
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            #     # end
         | 
| 50 | 
            -
            #   end
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            #   def self.included(base)
         | 
| 53 | 
            -
            #     # define_properties(base)
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            #     base.include ActiveModel::Model
         | 
| 56 | 
            -
            #     base.include HelperMethods
         | 
| 57 | 
            -
            #     base.extend  ClassMethods
         | 
| 58 | 
            -
            #     base.extend  HelperMethods
         | 
| 59 | 
            -
            #   end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
            #   # def self.define_properties(form_object_klass)
         | 
| 62 | 
            -
            #   #   class << form_object_klass
         | 
| 63 | 
            -
            #   #     #attr_accessor for models and env params
         | 
| 64 | 
            -
            #   #     # attr_accessor :params
         | 
| 65 | 
            -
             | 
| 66 | 
            -
            #   #     # byebug
         | 
| 67 | 
            -
             | 
| 68 | 
            -
            #   #     # def params=(val)
         | 
| 69 | 
            -
            #   #     #   @params = val
         | 
| 70 | 
            -
            #   #     # end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
            #   #     # def params
         | 
| 73 | 
            -
            #   #     #   @params
         | 
| 74 | 
            -
            #   #     # end
         | 
| 75 | 
            -
            #   #   end
         | 
| 76 | 
            -
            #   # end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
            #   # module ClassMethods
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            #   #   def init_models(*args)
         | 
| 81 | 
            -
            #   #     self.instance_eval do
         | 
| 82 | 
            -
            #   #       define_method(:array_of_single_models) { args }
         | 
| 83 | 
            -
            #   #     end
         | 
| 84 | 
            -
            #   #     add_attributes(args)
         | 
| 85 | 
            -
            #   #   end
         | 
| 86 | 
            -
             | 
| 87 | 
            -
            #   #   alias_method :init_single_models, :init_models
         | 
| 88 | 
            -
             | 
| 89 | 
            -
            #   #   def init_multiple_models(*args)
         | 
| 90 | 
            -
            #   #     self.instance_eval do
         | 
| 91 | 
            -
            #   #       define_method(:array_multiple_models) { args }
         | 
| 92 | 
            -
            #   #     end
         | 
| 93 | 
            -
            #   #     add_attributes(args)
         | 
| 94 | 
            -
            #   #   end
         | 
| 95 | 
            -
             | 
| 96 | 
            -
            #   #   def add_attributes(models)
         | 
| 97 | 
            -
            #   #     #acessors for model objects
         | 
| 98 | 
            -
            #   #     models.each{ |model| attr_accessor snake(model.to_s).to_sym }
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            #   #     #delegate attributes of models
         | 
| 101 | 
            -
            #   #     models.each do |model|
         | 
| 102 | 
            -
            #   #       model.column_names.each do |attr|
         | 
| 103 | 
            -
            #   #         delegate attr.to_sym, "#{attr}=".to_sym, to:     snake(model.to_s).to_sym,
         | 
| 104 | 
            -
            #   #                                                  prefix: true
         | 
| 105 | 
            -
            #   #       end
         | 
| 106 | 
            -
            #   #     end
         | 
| 107 | 
            -
            #   #   end
         | 
| 108 | 
            -
             | 
| 109 | 
            -
            #   #   def set_model_name(name)
         | 
| 110 | 
            -
            #   #     define_method(:model_name) { ActiveModel::Name.new(self, nil, name) }
         | 
| 111 | 
            -
            #   #   end
         | 
| 112 | 
            -
            #   # end
         | 
| 113 | 
            -
             | 
| 114 | 
            -
            #   def submit
         | 
| 115 | 
            -
            #     @array_of_single_models ||= array_of_single_models.reject do |model| 
         | 
| 116 | 
            -
            #       array_of_single_models_without_validates.include?(model) if self.respond_to?(:array_of_single_models_without_validates)
         | 
| 117 | 
            -
            #     end
         | 
| 118 | 
            -
            #     update_attributes
         | 
| 119 | 
            -
            #     update_attributes_for_collection
         | 
| 120 | 
            -
            #     self
         | 
| 121 | 
            -
            #   end
         | 
| 122 | 
            -
             | 
| 123 | 
            -
            #   alias_method :apply_parameters, :submit
         | 
| 124 | 
            -
             | 
| 125 | 
            -
            #   def save
         | 
| 126 | 
            -
            #     if valid?
         | 
| 127 | 
            -
            #       models = Array.new(@array_of_single_models)
         | 
| 128 | 
            -
            #       while model1 = models.delete( models[0] )
         | 
| 129 | 
            -
            #         models.each{ |model2| save_models(model1, model2) }
         | 
| 130 | 
            -
            #         save_last_model_if_not_associations(model1) if models.empty?
         | 
| 131 | 
            -
            #       end
         | 
| 132 | 
            -
            #       return true
         | 
| 133 | 
            -
            #     end
         | 
| 134 | 
            -
            #     false
         | 
| 135 | 
            -
            #   end
         | 
| 136 | 
            -
             | 
| 137 | 
            -
            #   def not_validate(*args)
         | 
| 138 | 
            -
            #     define_singleton_method(:array_of_single_models_without_validates) { args }
         | 
| 139 | 
            -
            #   end
         | 
| 140 | 
            -
             | 
| 141 | 
            -
            #   private
         | 
| 142 | 
            -
             | 
| 143 | 
            -
            #   def save_models(model_1, model_2)
         | 
| 144 | 
            -
            #     self_object_of_model_for_save = nil
         | 
| 145 | 
            -
            #     byebug
         | 
| 146 | 
            -
            #     if both_model_attributes_exist?(model_1, model_2)
         | 
| 147 | 
            -
            #       # byebug
         | 
| 148 | 
            -
            #       self_object_of_model_for_save = to_bind_models(model_1, model_2)
         | 
| 149 | 
            -
            #       save_model(self_object_of_model_for_save)
         | 
| 150 | 
            -
            #     else
         | 
| 151 | 
            -
            #       get_self_objects_of_model(model_1, model_2).each do |object|
         | 
| 152 | 
            -
            #         save_model(object)
         | 
| 153 | 
            -
            #       end
         | 
| 154 | 
            -
            #     end
         | 
| 155 | 
            -
            #   end
         | 
| 156 | 
            -
             | 
| 157 | 
            -
            #   def to_bind_models(model_1, model_2)
         | 
| 158 | 
            -
            #     self_object_of_model_1, self_object_of_model_2 = get_self_objects_of_model(model_1, model_2)
         | 
| 159 | 
            -
            #     association                                    = get_association(model_1, model_2)
         | 
| 160 | 
            -
             | 
| 161 | 
            -
            #     if    association == :belongs_to or association == :has_one
         | 
| 162 | 
            -
            #       self_object_of_model_1.send( "#{snake(model_2.to_s)}=", self_object_of_model_2 )
         | 
| 163 | 
            -
            #     elsif association == :has_many   or association == :has_and_belongs_to_many
         | 
| 164 | 
            -
            #       self_object_of_model_1.method("#{model_2.table_name}").call << self_object_of_model_2
         | 
| 165 | 
            -
            #     end
         | 
| 166 | 
            -
             | 
| 167 | 
            -
            #     self_object_of_model_1
         | 
| 168 | 
            -
            #   end
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            #   def valid_model_for_save?(model)
         | 
| 171 | 
            -
            #     ( (attributes_is_present?(model) and method( snake(model.to_s) ).call.id != nil) or (method( snake(model.to_s) ).call.id == nil and !all_attributes_is_empty?(model)) )
         | 
| 172 | 
            -
            #   end
         | 
| 173 | 
            -
             | 
| 174 | 
            -
            #   def attributes_is_present?(model)
         | 
| 175 | 
            -
            #     (make_attributes_of_model(model) & params.keys).present?
         | 
| 176 | 
            -
            #   end
         | 
| 177 | 
            -
             | 
| 178 | 
            -
            #   def both_model_attributes_exist?(model_1, model_2)
         | 
| 179 | 
            -
            #     valid_model_for_save?(model_1) and valid_model_for_save?(model_2)
         | 
| 180 | 
            -
            #   end
         | 
| 181 | 
            -
             | 
| 182 | 
            -
            #   def save_model(self_object_of_model)
         | 
| 183 | 
            -
            #     if valid_model_for_save?(self_object_of_model.class)
         | 
| 184 | 
            -
            #       self_object_of_model.save!  
         | 
| 185 | 
            -
            #     end
         | 
| 186 | 
            -
            #   end
         | 
| 187 | 
            -
             | 
| 188 | 
            -
            #   def all_attributes_is_empty?(model)
         | 
| 189 | 
            -
            #     is_empty = true
         | 
| 190 | 
            -
            #     array_symbols_of_attributes = (make_attributes_of_model(model) & params.keys).map { |attr| attr.to_sym }
         | 
| 191 | 
            -
            #     params.slice(*array_symbols_of_attributes).values.each do |value|
         | 
| 192 | 
            -
            #       is_empty = false unless value == ""
         | 
| 193 | 
            -
            #     end
         | 
| 194 | 
            -
            #     is_empty
         | 
| 195 | 
            -
            #   end
         | 
| 196 | 
            -
             | 
| 197 | 
            -
            #   def get_self_objects_of_model(model_1, model_2)
         | 
| 198 | 
            -
            #     [ method( snake(model_1.to_s) ).call, method( snake(model_2.to_s) ).call ]
         | 
| 199 | 
            -
            #   end
         | 
| 200 | 
            -
             | 
| 201 | 
            -
            #   def save_last_model_if_not_associations(model)
         | 
| 202 | 
            -
            #     association_trigger  = false
         | 
| 203 | 
            -
            #     self_object_of_model = method( snake(model.to_s) ).call
         | 
| 204 | 
            -
            #     @array_of_single_models.each { |model2| association_trigger = true if get_association(model, model2) }
         | 
| 205 | 
            -
            #     self_object_of_model.save unless association_trigger
         | 
| 206 | 
            -
            #   rescue
         | 
| 207 | 
            -
            #     self_object_of_model.class.find(self_object_of_model.id).update!(self_object_of_model.attributes)
         | 
| 208 | 
            -
            #   end
         | 
| 209 | 
            -
             | 
| 210 | 
            -
            #   def validation_models
         | 
| 211 | 
            -
            #     @array_of_single_models.each do |model|
         | 
| 212 | 
            -
            #       next unless valid_model_for_save?(model)
         | 
| 213 | 
            -
            #       set_errors( method(snake(model.to_s)).call.errors ) unless method( snake(model.to_s) ).call.valid?
         | 
| 214 | 
            -
            #     end
         | 
| 215 | 
            -
            #   end
         | 
| 216 | 
            -
             | 
| 217 | 
            -
            #   def set_errors(model_errors)
         | 
| 218 | 
            -
            #     model_errors.each do |attribute, message|
         | 
| 219 | 
            -
            #       errors.add(attribute, message)
         | 
| 220 | 
            -
            #     end
         | 
| 221 | 
            -
            #   end
         | 
| 222 | 
            -
             | 
| 223 | 
            -
            #   def update_attributes
         | 
| 224 | 
            -
            #     @array_of_single_models.each do |model|
         | 
| 225 | 
            -
            #       model_attributes = make_attributes_of_model(model)
         | 
| 226 | 
            -
            #       method( snake(model.to_s) ).call.assign_attributes( get_attributes_for_update(model_attributes, model) )
         | 
| 227 | 
            -
            #     end
         | 
| 228 | 
            -
            #   end
         | 
| 229 | 
            -
             | 
| 230 | 
            -
            #   def update_attributes_for_collection
         | 
| 231 | 
            -
            #     @array_of_single_models.each do |model|
         | 
| 232 | 
            -
            #       assign_attributes_for_collection(model)
         | 
| 233 | 
            -
            #     end
         | 
| 234 | 
            -
            #   end
         | 
| 235 | 
            -
             | 
| 236 | 
            -
            #   def keys_of_collections
         | 
| 237 | 
            -
            #     @keys ||= []
         | 
| 238 | 
            -
            #     params.keys.each do |key|
         | 
| 239 | 
            -
            #       @array_of_single_models.each do |model|
         | 
| 240 | 
            -
            #         self_object_of_model = method( snake(model.to_s) ).call
         | 
| 241 | 
            -
            #         method_name          = key.to_s[/#{snake(model.to_s)}_(.*)/, 1]
         | 
| 242 | 
            -
            #         @keys << method_name if self_object_of_model.respond_to? method_name.to_s
         | 
| 243 | 
            -
            #       end if key[/^.+_ids$/]
         | 
| 244 | 
            -
            #     end if @keys.empty?
         | 
| 245 | 
            -
            #     @keys
         | 
| 246 | 
            -
            #   end
         | 
| 247 | 
            -
             | 
| 248 | 
            -
            #   def exist_any_errors_without_collections?
         | 
| 249 | 
            -
            #     keys_of_collections.each do |method_name|
         | 
| 250 | 
            -
            #       @array_of_single_models.each do |model|
         | 
| 251 | 
            -
            #         name_of_model          = method_name.to_s[/^(.+)_ids$/, 1]
         | 
| 252 | 
            -
            #         name_of_constant_model = name_of_model.split('_').map(&:capitalize).join
         | 
| 253 | 
            -
            #         name_of_key_error      = Object.const_get(name_of_constant_model).table_name
         | 
| 254 | 
            -
            #         errors.messages.delete(name_of_key_error.to_sym)
         | 
| 255 | 
            -
            #       end
         | 
| 256 | 
            -
            #     end unless valid?
         | 
| 257 | 
            -
            #     errors.messages.empty?
         | 
| 258 | 
            -
            #   end
         | 
| 259 | 
            -
             | 
| 260 | 
            -
            #   def assign_attributes_for_collection(model)
         | 
| 261 | 
            -
            #     self_object_of_model = method( snake(model.to_s) ).call
         | 
| 262 | 
            -
             | 
| 263 | 
            -
            #     keys_of_collections.each do |method_name|
         | 
| 264 | 
            -
            #       if self_object_of_model.respond_to? method_name
         | 
| 265 | 
            -
            #         old_attribute = self_object_of_model.method( method_name ).call
         | 
| 266 | 
            -
            #         unless self_object_of_model.update_attributes( {method_name.to_s => params["#{snake(model.to_s)}_#{method_name}".to_sym]} )
         | 
| 267 | 
            -
            #           set_errors(self_object_of_model.errors)
         | 
| 268 | 
            -
            #           self_object_of_model.update_attributes( {method_name.to_s => old_attribute} )
         | 
| 269 | 
            -
            #         end if exist_any_errors_without_collections?
         | 
| 270 | 
            -
            #       end
         | 
| 271 | 
            -
            #     end
         | 
| 272 | 
            -
            #   end
         | 
| 273 | 
            -
             | 
| 274 | 
            -
            #   def make_attributes_of_model(model)
         | 
| 275 | 
            -
            #     model_attributes = []
         | 
| 276 | 
            -
            #     model.column_names.each do |name|
         | 
| 277 | 
            -
            #       model_attributes << "#{snake(model.to_s)}_#{name}"
         | 
| 278 | 
            -
            #     end
         | 
| 279 | 
            -
            #     model_attributes
         | 
| 280 | 
            -
            #   end
         | 
| 281 | 
            -
             | 
| 282 | 
            -
            #   def get_attributes_for_update(model_attributes, model)
         | 
| 283 | 
            -
            #     attributes_for_update = {}
         | 
| 284 | 
            -
            #     hash_attributes   = params.slice(*model_attributes)
         | 
| 285 | 
            -
            #     hash_attributes.each{ |attr, val| attributes_for_update[attr.gsub(/#{snake(model.to_s)}_(.*)/, '\1')] = val }
         | 
| 286 | 
            -
            #     attributes_for_update
         | 
| 287 | 
            -
            #   end
         | 
| 288 | 
            -
             | 
| 289 | 
            -
            #   def get_association(class1, class2)
         | 
| 290 | 
            -
            #     class1.reflections.slice(snake(class2.to_s), class2.table_name).values.first&.macro
         | 
| 291 | 
            -
            #   end
         | 
| 292 | 
            -
             | 
| 293 | 
            -
             | 
| 294 | 
            -
            #   # get attributes
         | 
| 295 | 
            -
            #   # .gsub(/^\[|\]$|"/, '').split(', ')
         | 
| 296 | 
            -
             | 
| 297 | 
            -
            # end
         |