better_record 0.10.2 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f6c701ce3492212c79ccdf60ec86a1dea60b264c1a5e5952fe5c42b0b6eaaf7
4
- data.tar.gz: 9614fda8762227624a58c7e34733a0bca69cc0656e28b6e166fb4010d4a27571
3
+ metadata.gz: 868f2ca1bb72db17669260a1d1ef913960d92f6f91c75ea48dcaa8f0bb5d1000
4
+ data.tar.gz: 1d504c0352fe3e2bbf64b5a0bfc027ce6c6de76e959cc58f62ee06949b6abcd9
5
5
  SHA512:
6
- metadata.gz: 9224d9d3fc1b864f0a3b7f5f0599d1f44a02740e5d0d4626476914462bb328c3fb799cdf7b6b6d6ea0046ef681ca75aedd9ca6175168140fdb753c2788919b4b
7
- data.tar.gz: ed05b77cfe9fdf8cbd55daa38f0a96469bb0bca60ce3972d601b1d50706bdcdcaee031fcdf57e003c8f900633f4b6f5cf3815f6698d1296010efd1421edce96e
6
+ metadata.gz: 330ebdd9bd1c8c1772d03290236705affbedb1f45c3fa7b99cc6b365365541cbe2d9afef7119d3fc862ab412d62ec1e89199cdaf8eba5fb21a94f6c531b1a854
7
+ data.tar.gz: c502594671fcfa886bf481366121ffa568d5bf19ceef39a393c5ab66e9ababdfc686300f6320cc4c9426c181de7e59e740c3df819b5736c2f0f2ac285f3aa61d
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BetterRecord
4
+ module BaseExtensions
5
+ module AttributeMethods
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BetterRecord
4
+ module BaseExtensions
5
+ module AttributeMethods
6
+ module Write
7
+ extend ActiveSupport::Concern
8
+
9
+ def _write_attribute(attr_name, value)
10
+ if should_normalize? attr_name
11
+ super(attr_name, normalize_attribute_value(attr_name, value))
12
+ else
13
+ super(attr_name, value)
14
+ end
15
+ end
16
+
17
+ def normalize_attribute_value(attr_name, value)
18
+ case type_for_attribute(attr_name)
19
+ when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array
20
+ [value].flatten.select(&:present?)
21
+ when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb
22
+ value.presence || {}
23
+ when ActiveRecord::Type::Boolean
24
+ BetterRecord.strict_booleans ? Boolean.strict_parse(value) : Boolean.parse(value)
25
+ else
26
+ value.presence
27
+ end
28
+ end
29
+
30
+ def should_normalize?(attr_name)
31
+ if !respond_to?(:normalize_columns?) || normalize_columns?
32
+ if respond_to?(:normalized_columns)
33
+ normalized_columns.is_a?(Array) ?
34
+ normalized_columns.include?(attr_name.to_sym) :
35
+ normalized_columns[attr_name]
36
+ else
37
+ true
38
+ end
39
+ else
40
+ false
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BetterRecord
4
- VERSION = '0.10.2'
4
+ VERSION = '0.10.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-07 00:00:00.000000000 Z
11
+ date: 2018-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -267,8 +267,9 @@ files:
267
267
  - lib/better_record/concerns/active_record_extensions/associations_extensions/association_scope_extensions.rb
268
268
  - lib/better_record/concerns/active_record_extensions/associations_extensions/belongs_to_polymorphic_extensions.rb
269
269
  - lib/better_record/concerns/active_record_extensions/associations_extensions/builder_extensions/association_extensions.rb
270
- - lib/better_record/concerns/active_record_extensions/attribute_methods/write.rb
271
270
  - lib/better_record/concerns/active_record_extensions/base_extensions.rb
271
+ - lib/better_record/concerns/active_record_extensions/base_extensions/attribute_methods.rb
272
+ - lib/better_record/concerns/active_record_extensions/base_extensions/attribute_methods/write.rb
272
273
  - lib/better_record/concerns/active_record_extensions/connection_adapter_extensions.rb
273
274
  - lib/better_record/concerns/active_record_extensions/reflection_extensions.rb
274
275
  - lib/better_record/concerns/controllers/authenticatable.rb
@@ -333,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
333
334
  version: '0'
334
335
  requirements: []
335
336
  rubyforge_project:
336
- rubygems_version: 2.7.7
337
+ rubygems_version: 2.7.6
337
338
  signing_key:
338
339
  specification_version: 4
339
340
  summary: Fix functions that are lacking in Active record to be compatible with multi-app
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module BetterRecord
4
- module AttributeMethods
5
- module Write
6
- extend ActiveSupport::Concern
7
-
8
- def _write_attribute(attr_name, value)
9
- if should_normalize? attr_name
10
- super(attr_name, normalize_attribute_value(attr_name, value))
11
- else
12
- super(attr_name, value)
13
- end
14
- end
15
-
16
- def normalize_attribute_value(attr_name, value)
17
- case type_for_attribute(attr_name)
18
- when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array
19
- [value].flatten.select(&:present?)
20
- when ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Jsonb
21
- value.presence || {}
22
- when ActiveRecord::Type::Boolean
23
- BetterRecord.strict_booleans ? Boolean.strict_parse(value) : Boolean.parse(value)
24
- else
25
- value.presence
26
- end
27
- end
28
-
29
- def should_normalize?(attr_name)
30
- if !respond_to?(:normalize_columns?) || normalize_columns?
31
- if respond_to?(:normalized_columns)
32
- normalized_columns.is_a?(Array) ?
33
- normalized_columns.include?(attr_name.to_sym) :
34
- normalized_columns[attr_name]
35
- else
36
- true
37
- end
38
- else
39
- false
40
- end
41
- end
42
- end
43
- end
44
- end