acts_as_removable 0.9.4 → 0.9.5

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
  SHA1:
3
- metadata.gz: dcc13acf0ef4676070b9c1b58df18af874be7940
4
- data.tar.gz: f25399054b7cab95fd0489cd0e88a6685a90997d
3
+ metadata.gz: b2e52df51683c7203a4a78ed2f72ce9b5c72d464
4
+ data.tar.gz: 9a39dbee521544bdcdae76250996c6dcb12e1fbf
5
5
  SHA512:
6
- metadata.gz: d390b4ccf8503d4554d1efb90a750675d83af09a65cb25b578d04996031f328ef904f3a82721bbde4727f4919a7b06d28ab97f87b2d3869a9693bc80088e8daa
7
- data.tar.gz: 0e79c8d9d8ec1ac4d9e56aa111b16965aaa4455d734e0c057ca8dda37d541073ea3226d81093a231f6b2da1ad5d28375b18a71040b899117f4d035f38d58ffda
6
+ metadata.gz: 6f16a0de9785d79ffd75790c7b4872e6d7119fc9afc474547fa3aaaa6815e95e2de6e0bc5dbe12384d43864c29e44d6c064649c2fe6cc3ebac76358f103cc9a7
7
+ data.tar.gz: 4e0651c43989baa13f8624f58513ce2df8adbd8c2b55a75e99f983006c6669a9e9448168e5570cea926c2e131ad4d32ecd835fa6b4b7eef8f24647a6122bf1ed
@@ -1,3 +1,3 @@
1
1
  module ActsAsRemovable
2
- VERSION = '0.9.4'
2
+ VERSION = '0.9.5'
3
3
  end
@@ -5,12 +5,7 @@ require "acts_as_removable/version"
5
5
  module ActsAsRemovable
6
6
  extend ActiveSupport::Concern
7
7
 
8
- included do
9
- extend(ClassMethods)
10
- end
11
-
12
8
  module ClassMethods
13
-
14
9
  # Add ability to remove ActiveRecord instances
15
10
  #
16
11
  # acts_as_removable
@@ -21,29 +16,26 @@ module ActsAsRemovable
21
16
  #
22
17
  # * <tt>:column_name</tt> - A symbol or string with the column to use for removal timestamp.
23
18
  # * <tt>:without_default_scope</tt> - A boolean indicating to not set a default scope.
24
- def acts_as_removable(options={})
25
- self.class_eval do
26
- @_acts_as_removable_column_name = (options[:column_name] || 'removed_at').to_s
27
- def self._acts_as_removable_column_name
28
- @_acts_as_removable_column_name
29
- end
19
+ def acts_as_removable(options = {})
20
+ _acts_as_removable_options.merge!(options)
30
21
 
31
- scope :removed, -> {
32
- removed_at_column_name = self._acts_as_removable_column_name
33
- query = where(all.table[removed_at_column_name].not_eq(nil).to_sql)
34
- ::ActsAsRemovable.removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].eq(nil).to_sql)
35
- }
22
+ scope :removed, -> {
23
+ removed_at_column_name = _acts_as_removable_options[:column_name]
24
+ query = where(all.table[removed_at_column_name].not_eq(nil).to_sql)
25
+ _removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].eq(nil).to_sql)
26
+ }
36
27
 
37
- scope :actives, -> {
38
- removed_at_column_name = self._acts_as_removable_column_name
39
- query = where(all.table[removed_at_column_name].eq(nil).to_sql)
40
- ::ActsAsRemovable.removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].not_eq(nil).to_sql)
41
- }
28
+ scope :actives, -> {
29
+ removed_at_column_name = _acts_as_removable_options[:column_name]
30
+ query = where(all.table[removed_at_column_name].eq(nil).to_sql)
31
+ _removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].not_eq(nil).to_sql)
32
+ }
42
33
 
43
- default_scope -> {where(all.table[self._acts_as_removable_column_name].eq(nil).to_sql)} unless options[:without_default_scope]
34
+ default_scope -> {where(all.table[_acts_as_removable_options[:column_name]].eq(nil).to_sql)} unless _acts_as_removable_options[:without_default_scope]
44
35
 
45
- define_model_callbacks :remove, :unremove
36
+ define_model_callbacks :remove, :unremove
46
37
 
38
+ class_eval do
47
39
  def self.before_remove(*args, &block)
48
40
  set_callback :remove, :before, *args, &block
49
41
  end
@@ -61,7 +53,7 @@ module ActsAsRemovable
61
53
  end
62
54
 
63
55
  def removed?
64
- self.send(self.class._acts_as_removable_column_name).present?
56
+ send(self.class._acts_as_removable_options[:column_name]).present?
65
57
  end
66
58
 
67
59
  def remove(options={})
@@ -80,23 +72,27 @@ module ActsAsRemovable
80
72
  _update_remove_attribute(:unremove, nil, true, options)
81
73
  end
82
74
 
83
- private
84
-
85
75
  def _update_remove_attribute(callback, value, with_bang=false, options={})
86
76
  run_callbacks callback.to_sym do
87
- self.send("#{self.class._acts_as_removable_column_name}=", value)
88
- with_bang ? self.save!(options) : self.save(options)
77
+ send("#{self.class._acts_as_removable_options[:column_name]}=", value)
78
+ with_bang ? save!(options) : save(options)
89
79
  end
90
80
  end
91
81
  end
92
82
  end
93
- end
94
83
 
95
- # Helps deleting where statements from query
96
- def self.removable_where_values(query, column_name, remove_where)
97
- query = query.with_default_scope if query.respond_to?(:with_default_scope)
98
- query.where_values.delete(remove_where)
99
- query
84
+ def _acts_as_removable_options
85
+ @_acts_as_removable_options ||= {
86
+ column_name: 'removed_at'
87
+ }
88
+ end
89
+
90
+ # Delete where statements from query
91
+ def _removable_where_values(query, column_name, remove_where)
92
+ query = query.with_default_scope if query.respond_to?(:with_default_scope)
93
+ query.where_values.delete(remove_where)
94
+ query
95
+ end
100
96
  end
101
97
  end
102
98
 
@@ -28,7 +28,7 @@ describe 'acts_as_removable' do
28
28
  db_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'acts_as_removable.db'))
29
29
  Dir::mkdir(File.dirname(db_file)) unless File.exists?(File.dirname(db_file))
30
30
  ActiveRecord::Base.establish_connection(
31
- :adapter => "sqlite3",
31
+ :adapter => 'sqlite3',
32
32
  :database => "#{File.expand_path(File.join(File.dirname(__FILE__), '..'))}/tmp/acts_as_removable.db"
33
33
  )
34
34
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'my_models'")
@@ -42,7 +42,7 @@ describe 'acts_as_removable' do
42
42
  end
43
43
  end
44
44
 
45
- it "test column and check method" do
45
+ it 'test column and check method' do
46
46
  [[MyModel.create!, :removed_at], [MySecondModel.create!, :use_this_column]].each do |r, column_name|
47
47
  r.removed?.should be_false
48
48
  r.send(column_name).should be_nil
@@ -53,7 +53,7 @@ describe 'acts_as_removable' do
53
53
  end
54
54
  end
55
55
 
56
- it "test scopes" do
56
+ it 'test scopes' do
57
57
  MyModel.delete_all
58
58
  MySecondModel.delete_all
59
59
 
@@ -73,7 +73,7 @@ describe 'acts_as_removable' do
73
73
  MySecondModel.unscoped.count.should be(2)
74
74
  end
75
75
 
76
- it "test callbacks" do
76
+ it 'test callbacks' do
77
77
  r = MyModel.create!
78
78
  r.callback_before_remove.should be_false
79
79
  r.callback_after_remove.should be_false
@@ -93,6 +93,5 @@ describe 'acts_as_removable' do
93
93
  r.callback_after_remove.should be_true
94
94
  r.callback_before_unremove.should be_true
95
95
  r.callback_after_unremove.should be_true
96
-
97
96
  end
98
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_removable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-12 00:00:00.000000000 Z
12
+ date: 2014-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport