paranoia 2.1.2 → 2.1.3

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: 9cebeb3a3793e609311d39a7ade99dfa04defb9b
4
- data.tar.gz: 43772ac7c1bbcfd9435170ecb14540bafdb80bcd
3
+ metadata.gz: 16d15104c160fe11573395f01bcf18d026d64291
4
+ data.tar.gz: 009671430b1d508dc3a020773aa8a34666933b30
5
5
  SHA512:
6
- metadata.gz: 6fe0ec6389b02424eb3128f5e4add46d86a15792737fa55ff3c9e11600c982356fa6393c55968792dabcb0271043a47a8c2949454fb9358607dc5f484b308fd4
7
- data.tar.gz: 8770f65052476d8fa080a93af63655d13c872e1c2ec34ae89c157fe1d38e463dc398c921dd911c6a7c763ac766af4e435c5a474e33542326f702f9393555c693
6
+ metadata.gz: 9d8cbcb3adc56426e31fdfdfe551c0e557ea023053358ce22083ef5a7140fa480ef004c6e363b95dfddd838f244090edf8cc6dc86a0cc05d98d00f6716d892a0
7
+ data.tar.gz: c9a6eb1e4da8f21976b01152b0faed9ce736f9019896db44595475c75079266b3dccc6dc4f41a972ef1fba25003ebcb0b3ef76f29fb13884535b02ea5fa8fd69
data/README.md CHANGED
@@ -4,10 +4,14 @@ Paranoia is a re-implementation of [acts\_as\_paranoid](http://github.com/techno
4
4
 
5
5
  You would use either plugin / gem if you wished that when you called `destroy` on an Active Record object that it didn't actually destroy it, but just *hide* the record. Paranoia does this by setting a `deleted_at` field to the current time when you `destroy` a record, and hides it by scoping all queries on your model to only include records which do not have a `deleted_at` field.
6
6
 
7
- If you wish to actually destroy an object you may call `really_destroy!`. **WARNING**: This will also *really destroy* all `dependent: destroy` records, so please aim this method away from face when using.
7
+ If you wish to actually destroy an object you may call `really_destroy!`. **WARNING**: This will also *really destroy* all `dependent: :destroy` records, so please aim this method away from face when using.
8
8
 
9
9
  If a record has `has_many` associations defined AND those associations have `dependent: :destroy` set on them, then they will also be soft-deleted if `acts_as_paranoid` is set, otherwise the normal destroy will be called.
10
10
 
11
+ ## Getting Started Video
12
+ Setup and basic usage of the paranoia gem
13
+ [GoRails #41](https://gorails.com/episodes/soft-delete-with-paranoia)
14
+
11
15
  ## Installation & Usage
12
16
 
13
17
  For Rails 3, please use version 1 of Paranoia:
@@ -184,6 +188,25 @@ before_restore :callback_name_goes_here
184
188
 
185
189
  For more information, please look at the tests.
186
190
 
191
+ #### About indexes:
192
+
193
+ Beware that you should adapt all your indexes for them to work as fast as previously.
194
+ For example,
195
+
196
+ ``` ruby
197
+ add_index :clients, :group_id
198
+ add_index :clients, [:group_id, :other_id]
199
+ ```
200
+
201
+ should be replaced with
202
+
203
+ ``` ruby
204
+ add_index :clients, :group_id, where: "deleted_at IS NULL"
205
+ add_index :clients, [:group_id, :other_id], where: "deleted_at IS NULL"
206
+ ```
207
+
208
+ Of course, this is not necessary for the indexes you always use in association with `with_deleted` or `only_deleted`.
209
+
187
210
  ## Acts As Paranoid Migration
188
211
 
189
212
  You can replace the older `acts_as_paranoid` methods as follows:
data/lib/paranoia.rb CHANGED
@@ -144,7 +144,7 @@ module Paranoia
144
144
  end
145
145
 
146
146
  if association_data.nil? && association.macro.to_s == "has_one"
147
- association_class_name = association.class_name
147
+ association_class_name = association.klass.name
148
148
  association_foreign_key = association.foreign_key
149
149
 
150
150
  if association.type
@@ -1,3 +1,3 @@
1
1
  module Paranoia
2
- VERSION = "2.1.2"
2
+ VERSION = "2.1.3"
3
3
  end
@@ -34,7 +34,9 @@ def setup!
34
34
  'custom_column_models' => 'destroyed_at DATETIME',
35
35
  'custom_sentinel_models' => 'deleted_at DATETIME NOT NULL',
36
36
  'non_paranoid_models' => 'parent_model_id INTEGER',
37
- 'polymorphic_models' => 'parent_id INTEGER, parent_type STRING, deleted_at DATETIME'
37
+ 'polymorphic_models' => 'parent_id INTEGER, parent_type STRING, deleted_at DATETIME',
38
+ 'namespaced_paranoid_has_ones' => 'deleted_at DATETIME, paranoid_belongs_tos_id INTEGER',
39
+ 'namespaced_paranoid_belongs_tos' => 'deleted_at DATETIME, paranoid_has_one_id INTEGER',
38
40
  }.each do |table_name, columns_as_sql_string|
39
41
  ActiveRecord::Base.connection.execute "CREATE TABLE #{table_name} (id INTEGER NOT NULL PRIMARY KEY, #{columns_as_sql_string})"
40
42
  end
@@ -618,6 +620,19 @@ class ParanoiaTest < test_framework
618
620
  assert hasOne.reload.deleted_at.nil?
619
621
  end
620
622
 
623
+ def test_restore_with_module_scoped_has_one_association
624
+ # setup and destroy test object
625
+ hasOne = Namespaced::ParanoidHasOne.create
626
+ hasOne.destroy
627
+ assert_equal false, hasOne.reload.deleted_at.nil?
628
+
629
+ # Does it raise "uninitialized constant ParanoidBelongsTo"
630
+ # on restore of ParanoidHasOne?
631
+ hasOne.restore(:recursive => true)
632
+
633
+ assert hasOne.reload.deleted_at.nil?
634
+ end
635
+
621
636
  # covers #185
622
637
  def test_restoring_recursive_has_one_restores_correct_object
623
638
  hasOnes = 2.times.map { ParanoidModelWithHasOne.create }
@@ -1001,3 +1016,19 @@ class PolymorphicModel < ActiveRecord::Base
1001
1016
  acts_as_paranoid
1002
1017
  belongs_to :parent, polymorphic: true
1003
1018
  end
1019
+
1020
+ module Namespaced
1021
+ def self.table_name_prefix
1022
+ "namespaced_"
1023
+ end
1024
+
1025
+ class ParanoidHasOne < ActiveRecord::Base
1026
+ acts_as_paranoid
1027
+ has_one :paranoid_belongs_to, dependent: :destroy
1028
+ end
1029
+
1030
+ class ParanoidBelongsTo < ActiveRecord::Base
1031
+ acts_as_paranoid
1032
+ belongs_to :paranoid_has_one
1033
+ end
1034
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paranoia
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - radarlistener@gmail.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-28 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: 1.3.6
95
95
  requirements: []
96
96
  rubyforge_project: paranoia
97
- rubygems_version: 2.4.6
97
+ rubygems_version: 2.4.8
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: Paranoia is a re-implementation of acts_as_paranoid for Rails 3, using much,