self_updated_at 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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