self_updated_at 0.1.0 → 0.2.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: 2c8084a4d017a4c391f6d326aada207e9a65043913ed2a4437f02ac707086170
4
- data.tar.gz: 2412b775dafb9104eeaa8bb405a8ea42ff964319d60a23855e34c4a4b892f8be
3
+ metadata.gz: b54580e68038973e417f3252349922e850c464ae4ea9b6c368e1f79c66abf797
4
+ data.tar.gz: 72ecbed4343b3b2fc6f8c1cb9af8d8b8e99763513b8ff0ef3444b9dc944983d7
5
5
  SHA512:
6
- metadata.gz: ded6507fd5438e90a1059cc5f600895e9ccf8e0fceac7e2b45bc8f877d7a0043f001c4530b88fae818407539ccbf3e4654b496d13b73cbe95092c9ea2b25762d
7
- data.tar.gz: f9aa375cffd25d601d5111439ad734c300dfbfbc4883a56e7c745bf7d749d1bd686343023acf64ddbd91cfbcad79a76a778516415b1873848cbcec42daad33d8
6
+ metadata.gz: 855148380e9af5f2339ce5469dcc33a1b4102f655db192065b4fb6245a793e9e58894c4f276acd55a551ace28be1269a32502aa37d2889f266faa86698a1007f
7
+ data.tar.gz: a8cff45786caa14ce5f0bb7ae83461fd46faf6ca469731caf08ac655dea77a291953d85aa2672042ee15c661278f12a69fb81c5fb71132b1f25ccf57d3a441e8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- self_updated_at (0.1.0)
4
+ self_updated_at (0.2.0)
5
5
  activerecord (>= 4.2.8)
6
6
 
7
7
  GEM
@@ -1,3 +1,3 @@
1
1
  module SelfUpdatedAt
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -27,12 +27,24 @@ module SelfUpdatedAt
27
27
  end
28
28
 
29
29
  module ClassMethods
30
- def self_updated_at(update_column_name, columns:)
31
- before_save do
32
- if columns.any?{ |c| send("#{c}_changed?") }
33
- current_time = self.class.default_timezone == :utc ? Time.now.utc : Time.now
30
+ def self_updated_at(update_column_name, columns: [], methods: [])
31
+ before_create do
32
+ current_time = self.class.default_timezone == :utc ? Time.now.utc : Time.now
33
+ write_attribute(update_column_name, current_time) if eval("#{update_column_name}.nil?")
34
+ self
35
+ end
36
+ before_update do
37
+ current_time = self.class.default_timezone == :utc ? Time.now.utc : Time.now
38
+ # for ActiveRecord ~> 5.1
39
+ if Gem::Version.new(ActiveRecord.version) >= Gem::Version.new('5.1')
40
+ columns_changed = columns.any? { |c| will_save_change_to_attribute?(c) }
41
+ else
42
+ columns_changed = columns.any? { |c| attribute_changed?(c) }
43
+ end
44
+ if (columns_changed || methods.any? { |m| send(m) })
34
45
  write_attribute(update_column_name, current_time)
35
46
  end
47
+ self
36
48
  end
37
49
  end
38
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: self_updated_at
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nishio Takuya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-08 00:00:00.000000000 Z
11
+ date: 2018-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord