active_partition 0.2.0 → 0.4.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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f9a675008e38b58080b6c3e350a2141be7275e5ca153500340a1f0f759e1442
4
- data.tar.gz: 58a64de3dd865b634baf1fd3999203c75f4007d046e68818ab92c382b6c54b98
3
+ metadata.gz: c3178cd138ff766dfa2e7c01735724975fbaa1a63b0fb444c13643effd2b740d
4
+ data.tar.gz: 94d3d671b623d8f45ef95ad25023f84901653771a58fa764a7ce0364e386babb
5
5
  SHA512:
6
- metadata.gz: 180a0215bb89ef08a3fb3ab38490ad89335419ec9fd1b4026026ef008e1fefcd02dc4ccfcb8e9c0e16c231aa7193119d32520b1fe87cd70e0448a613fb1871f1
7
- data.tar.gz: 2e014eabe0b6b129f062ac5c7341b4819fc87e9e5206479b6b3630945b8b220bfd2a0c30591ab44b7f23b982829dd0dcb5714215ac962384311efc490c57a862
6
+ metadata.gz: 53535fb5f2739bf8e6e3290e530e310dc80d7a3f6aeae71ee93c1ba88f56a22f9aaf2559a354a7c364604a3e2a8b03548e49317e68bb5d40946089c5ef43be61
7
+ data.tar.gz: 65037c3bcc0e9ed93f489670fd7377a35dfc67aac836b04c11b6e401d6010fe1098e410f090c7e2979443711aad506243a51d590be9211aff4156a893863b44a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_partition (0.1.0)
4
+ active_partition (0.2.0)
5
5
  rails
6
6
  range_operators (~> 0.1.1)
7
7
  rspec-rails
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActivePartition
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
@@ -15,12 +15,17 @@ module ActivePartition
15
15
 
16
16
  included do
17
17
  # when partitioned column change, create partition if needed
18
- before_save :create_partition_if_needed, if: -> {
19
- self.class.partitioned_by &&
20
- attribute_changed?(self.class.partitioned_by.to_s)
21
- }
18
+ # before_validation will be called with create, update, save, and create! methods
19
+ before_validation :create_partition_if_needed
22
20
 
23
21
  def create_partition_if_needed
22
+ if ["created_at", "updated_at"].include?(self.class.partitioned_by.to_s) && self.attributes[self.class.partitioned_by].nil?
23
+ # set default value if created_at or updated_at is nil
24
+ self.assign_attributes(self.class.partitioned_by => Time.current.utc)
25
+ end
26
+
27
+ return unless self.class.partitioned_by && attribute_changed?(self.class.partitioned_by.to_s)
28
+
24
29
  # get partitioned attribute value
25
30
  partitioned_value = attributes[self.class.partitioned_by.to_s]
26
31
  self.class.prepare_partition(partitioned_value, self.class.partition_range)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_partition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thien Tran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-01 00:00:00.000000000 Z
11
+ date: 2024-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug