Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
paranoia
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ikcrm_common
paranoia
Commits
857ed343
Commit
857ed343
authored
Jun 22, 2015
by
Ryan Bigg
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #247 from codeodor/rails4
Fix for #122, #121 and #175 on Rails 4 branch
parents
fcdcc7a9
7232e2f5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
2 deletions
+29
-2
lib/paranoia.rb
+14
-1
test/paranoia_test.rb
+15
-1
No files found.
lib/paranoia.rb
View file @
857ed343
...
...
@@ -154,7 +154,7 @@ module Paranoia
association_find_conditions
=
{
association_foreign_key
=>
self
.
id
}
end
association_class
=
Object
.
const_get
(
association_class_name
)
association_class
=
association_class_name
.
constantize
if
association_class
.
paranoid?
association_class
.
only_deleted
.
where
(
association_find_conditions
).
first
.
try!
(
:restore
,
recursive:
true
)
end
...
...
@@ -237,3 +237,16 @@ class ActiveRecord::Base
end
require
'paranoia/rspec'
if
defined?
RSpec
module
ActiveRecord
module
Validations
class
UniquenessValidator
<
ActiveModel
::
EachValidator
protected
def
build_relation_with_paranoia
(
klass
,
table
,
attribute
,
value
)
relation
=
build_relation_without_paranoia
(
klass
,
table
,
attribute
,
value
)
relation
.
and
(
klass
.
arel_table
[
klass
.
paranoia_column
].
eq
(
nil
))
end
alias_method_chain
:build_relation
,
:paranoia
end
end
end
test/paranoia_test.rb
View file @
857ed343
...
...
@@ -28,7 +28,7 @@ def setup!
'fail_callback_models'
=>
'deleted_at DATETIME'
,
'related_models'
=>
'parent_model_id INTEGER, parent_model_with_counter_cache_column_id INTEGER, deleted_at DATETIME'
,
'asplode_models'
=>
'parent_model_id INTEGER, deleted_at DATETIME'
,
'employers'
=>
'deleted_at DATETIME'
,
'employers'
=>
'
name VARCHAR(32),
deleted_at DATETIME'
,
'employees'
=>
'deleted_at DATETIME'
,
'jobs'
=>
'employer_id INTEGER NOT NULL, employee_id INTEGER NOT NULL, deleted_at DATETIME'
,
'custom_column_models'
=>
'destroyed_at DATETIME'
,
...
...
@@ -685,6 +685,19 @@ class ParanoiaTest < test_framework
# essentially, we're just ensuring that this doesn't crash
end
def
test_validates_uniqueness_only_checks_non_deleted_records
a
=
Employer
.
create!
(
name:
"A"
)
a
.
destroy
b
=
Employer
.
new
(
name:
"A"
)
assert
b
.
valid?
end
def
test_validates_uniqueness_still_works_on_non_deleted_records
a
=
Employer
.
create!
(
name:
"A"
)
b
=
Employer
.
new
(
name:
"A"
)
refute
b
.
valid?
end
def
test_i_am_the_destroyer
expected
=
%Q{
Sharon: "There should be a method called I_AM_THE_DESTROYER!"
...
...
@@ -909,6 +922,7 @@ end
class
Employer
<
ActiveRecord
::
Base
acts_as_paranoid
validates_uniqueness_of
:name
has_many
:jobs
has_many
:employees
,
:through
=>
:jobs
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment