Comments (7)
@rlue Actually, even simple validation error can break the deletion, which is odd to say the least. I've looked at the code and it does simple #save
to "soft-delete" the record, meaning a) validation error can break soft-deletion, b) any update callback can break (stop) soft-deletion, c) else?
The author seem to have a very particular idea about how to implement soft-deletion (which he calls "done right"), but validations breaking the deletion look very wrong to me.
from discard.
Sounds great!
from discard.
I'm curious: under what conditions might you expect #discard
to fail (other than, say, running out of database connections or some kind of network failure between app/DB servers)?
from discard.
@rlue calling discard
on a non-existent id. bang method definitely has its use cases.
from discard.
@artemf that's an interesting point. What do you think the correct behavior should be? Bypass validation on discard (e.g., via #update_columns
) and validate on restore?
from discard.
@rlue I would check how destroy is performed in rails and would design the call in a similar way (callbacks, etc.). Running update hooks on #discard
! Really? But that's what this gem (~ regular #save
) is doing.
from discard.
@artemf I've been looking at paranoia gem before and wrote my own implementation that is very similar to discard approach. I never had a real world scenario, then I had to update data and discard a record at the same time (so i never ran into issue your mentioning).
While I agree with you notion. Have you experienced issues with behavior you mention here?
from discard.
Related Issues (20)
- Support for discarded_by? HOT 3
- Unable to declare scope :kept as per the readme.md HOT 2
- discard has_and_belongs_to_many association HOT 1
- Discard callbacks don't work with observers HOT 3
- NoMethodError (undefined method `undiscarded?' ... HOT 4
- is discard_all! working on version 1.1.0 HOT 2
- after_discard_commit HOT 1
- All new records are discarded use-case HOT 2
- Run callbacks inside of the same transaction HOT 5
- Rails 7 is here, why not drop the upper version dependency? HOT 1
- Support for Rails 7.0.0 HOT 2
- Add the ability to use `dependent: :discard` in associations HOT 1
- Nil when finding has_one association HOT 2
- how is the integration with papertrail? HOT 1
- dependent: :discard HOT 12
- Sequel Support HOT 1
- guard on discard HOT 1
- `self.class.discard_column` as a boolean `is_discarded` for "if" and use `updated_at` for "when" HOT 1
- `def undiscard` doesn't follow `return false` pattern HOT 1
- .discarded query HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from discard.