passive_record 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/passive_record/hooks.rb +13 -0
- data/lib/passive_record/instance_methods.rb +6 -0
- data/lib/passive_record/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2a727f0eddce997336fe91ab47ded8d9778365f
|
4
|
+
data.tar.gz: d4db3194d0dffcc25ef26a73bbe6b777c3ff55ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61397fdf078c03795f36ebaec7a0a198cffb1cb05a6afc89468bc174392df06c17fdc8b4fa7681e1f200570393ff403e4b6872701312fdbfdc61203a6a389941
|
7
|
+
data.tar.gz: 41e04c0eb08a0138cda6033ffa394440f0980fd174d3d579f0db62f5cb7d01a8e9293ff85a615e52b3d04af2acfdfe423c49d8673b4d7b58f5426289e5df7334
|
data/lib/passive_record/hooks.rb
CHANGED
@@ -45,6 +45,19 @@ module PassiveRecord
|
|
45
45
|
self
|
46
46
|
end
|
47
47
|
|
48
|
+
|
49
|
+
def before_update_hooks
|
50
|
+
@hooks ||= []
|
51
|
+
@hooks.select { |hook| hook.kind == :before_update }
|
52
|
+
end
|
53
|
+
|
54
|
+
def before_update(*meth_syms, &blk)
|
55
|
+
hook = Hook.new(:before_update,*meth_syms,&blk)
|
56
|
+
@hooks ||= []
|
57
|
+
@hooks += [ hook ]
|
58
|
+
self
|
59
|
+
end
|
60
|
+
|
48
61
|
def after_update_hooks
|
49
62
|
@hooks ||= []
|
50
63
|
@hooks.select { |hook| hook.kind == :after_update }
|
@@ -1,6 +1,10 @@
|
|
1
1
|
module PassiveRecord
|
2
2
|
module InstanceMethods
|
3
3
|
def update(attrs={})
|
4
|
+
self.class.before_update_hooks.each do |hook|
|
5
|
+
hook.run(self)
|
6
|
+
end
|
7
|
+
|
4
8
|
attrs.each do |k,v|
|
5
9
|
send("#{k}=", v)
|
6
10
|
end
|
@@ -8,6 +12,8 @@ module PassiveRecord
|
|
8
12
|
self.class.after_update_hooks.each do |hook|
|
9
13
|
hook.run(self)
|
10
14
|
end
|
15
|
+
|
16
|
+
self
|
11
17
|
end
|
12
18
|
|
13
19
|
# from http://stackoverflow.com/a/8417341/90042
|