paranoid_create 0.0.10 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,3 +1,7 @@
1
1
  paranoid.db
2
2
  .rvmrc
3
- Gemfile.lock
3
+ Gemfile.lock
4
+ pkg
5
+ vendor
6
+ nbproject
7
+ .bundle
@@ -9,7 +9,7 @@ module Paranoid
9
9
  # end
10
10
  #
11
11
  # Item < ActiveRecord::Base
12
- # paranoid :field => [:available, fales, true]
12
+ # paranoid :field => [:available, false, true]
13
13
  # end
14
14
  #
15
15
  # === Options
@@ -36,7 +36,7 @@ module Paranoid
36
36
  @paranoid = true
37
37
 
38
38
  opts[:field] ||= [:deleted_at, Proc.new{Time.now.utc}, nil]
39
- class_inheritable_accessor :destroyed_field, :field_destroyed, :field_not_destroyed
39
+ class_attribute :destroyed_field, :field_destroyed, :field_not_destroyed
40
40
  if opts[:field].is_a?(Array)
41
41
  self.destroyed_field, self.field_destroyed, self.field_not_destroyed = opts[:field]
42
42
  else
@@ -3,22 +3,21 @@ module Paranoid
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- alias_method_chain :association_join, :paranoid
6
+ alias_method_chain :initialize, :paranoid
7
7
  end
8
8
 
9
- # Overrides ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation#association_join
10
- # adding paranoid conditions when necessary
11
- def association_join_with_paranoid
12
- return @join if @join
13
- result = association_join_without_paranoid
14
- if reflection.klass.paranoid?
15
- aliased_table = Arel::Table.new(table_name, :as => @aliased_table_name, :engine => arel_engine)
16
- pb = ActiveRecord::PredicateBuilder.new(arel_engine)
17
- result.concat(pb.build_from_hash(reflection.klass.paranoid_condition, aliased_table))
9
+ # Add conditions for eager loading
10
+ def initialize_with_paranoid(reflection, join_dependency, parent = nil)
11
+ result = initialize_without_paranoid(reflection, join_dependency, parent)
12
+ chain.reverse.each_with_index do |reflection, i|
13
+ if reflection.klass.paranoid?
14
+ conditions[i] << reflection.klass.paranoid_condition
15
+ end
18
16
  end
19
17
  result
20
18
  end
19
+
21
20
  end
22
21
  end
23
22
 
24
- ActiveRecord::Associations::ClassMethods::JoinDependency::JoinAssociation.class_eval { include Paranoid::JoinAssociation }
23
+ ActiveRecord::Associations::JoinDependency::JoinAssociation.class_eval { include Paranoid::JoinAssociation }
@@ -44,7 +44,7 @@ module Paranoid
44
44
 
45
45
  self.class.reflect_on_all_associations.each do |association|
46
46
  if association.options[:dependent] == :destroy && association.klass.paranoid?
47
- restore_related(association.klass, association.primary_key_name, association.options[:primary_key] || 'id', association.options) if association.macro.to_s =~ /^has/
47
+ restore_related(association.klass, association.foreign_key, association.options[:primary_key] || 'id', association.options) if association.macro.to_s =~ /^has/
48
48
  end
49
49
  end
50
50
 
@@ -1,3 +1,3 @@
1
1
  module Paranoid
2
- VERSION = '0.0.10'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -20,7 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ['lib']
22
22
 
23
- s.add_development_dependency('rspec', ['>= 2.5.0'])
24
- s.add_development_dependency('sqlite3-ruby', ['>= 1.3.3'])
25
- s.add_development_dependency('activerecord', ['>= 3.0.5'])
23
+ s.add_development_dependency('rspec', ['>= 2.6.0'])
24
+ s.add_development_dependency('sqlite3', ['>= 1.3.4'])
25
+ s.add_development_dependency('activerecord', ['>= 3.1.0'])
26
+ s.add_development_dependency('rake', ['0.9.2'])
26
27
  end
@@ -219,6 +219,10 @@ describe Paranoid do
219
219
  @r2d2.dents.with_destroyed.to_a.should == @dents
220
220
  end
221
221
 
222
+ it 'should show all dents with destroyed in a "where chain"' do
223
+ @r2d2.dents.where("description LIKE '%hit%'").with_destroyed.to_a.should == [@dents[0], @dents[2]]
224
+ end
225
+
222
226
  it 'should show only soft deleted with destroyed_only' do
223
227
  @r2d2.dents.with_destroyed_only.to_a.should == [@dents[2]]
224
228
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paranoid_create
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 10
10
- version: 0.0.10
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Philipp Ullmann
@@ -15,57 +15,72 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-01 00:00:00 +01:00
19
- default_executable:
18
+ date: 2011-09-05 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- name: rspec
23
21
  prerelease: false
22
+ type: :development
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 27
28
+ hash: 23
30
29
  segments:
31
30
  - 2
32
- - 5
31
+ - 6
33
32
  - 0
34
- version: 2.5.0
35
- type: :development
33
+ version: 2.6.0
34
+ name: rspec
36
35
  version_requirements: *id001
37
36
  - !ruby/object:Gem::Dependency
38
- name: sqlite3-ruby
39
37
  prerelease: false
38
+ type: :development
40
39
  requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
41
  requirements:
43
42
  - - ">="
44
43
  - !ruby/object:Gem::Version
45
- hash: 29
44
+ hash: 19
46
45
  segments:
47
46
  - 1
48
47
  - 3
49
- - 3
50
- version: 1.3.3
51
- type: :development
48
+ - 4
49
+ version: 1.3.4
50
+ name: sqlite3
52
51
  version_requirements: *id002
53
52
  - !ruby/object:Gem::Dependency
54
- name: activerecord
55
53
  prerelease: false
54
+ type: :development
56
55
  requirement: &id003 !ruby/object:Gem::Requirement
57
56
  none: false
58
57
  requirements:
59
58
  - - ">="
60
59
  - !ruby/object:Gem::Version
61
- hash: 13
60
+ hash: 3
62
61
  segments:
63
62
  - 3
63
+ - 1
64
64
  - 0
65
- - 5
66
- version: 3.0.5
67
- type: :development
65
+ version: 3.1.0
66
+ name: activerecord
68
67
  version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ prerelease: false
70
+ type: :development
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - "="
75
+ - !ruby/object:Gem::Version
76
+ hash: 63
77
+ segments:
78
+ - 0
79
+ - 9
80
+ - 2
81
+ version: 0.9.2
82
+ name: rake
83
+ version_requirements: *id004
69
84
  description:
70
85
  email: philipp.ullmann@create.at
71
86
  executables: []
@@ -95,7 +110,6 @@ files:
95
110
  - spec/schema.rb
96
111
  - spec/spec.opts
97
112
  - spec/spec_helper.rb
98
- has_rdoc: true
99
113
  homepage: http://github.com/create-philipp-ullmann/paranoid/
100
114
  licenses: []
101
115
 
@@ -125,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
139
  requirements: []
126
140
 
127
141
  rubyforge_project: paranoid_create
128
- rubygems_version: 1.3.7
142
+ rubygems_version: 1.8.8
129
143
  signing_key:
130
144
  specification_version: 3
131
145
  summary: Enable soft delete of ActiveRecord records. Based off defunct ActsAsParanoid and IsParanoid