Module: ActiveRecord::Undo::ModelExtension::InstanceMethods
- Defined in:
- lib/active_record/undo/model_extension.rb
Instance Method Summary collapse
- #expired? ⇒ Boolean
-
#restore! ⇒ Object
rubocop:disable Naming/PredicateMethod.
- #soft_delete! ⇒ Object
- #soft_deleted? ⇒ Boolean
- #undoable? ⇒ Boolean
Instance Method Details
#expired? ⇒ Boolean
56 57 58 59 60 61 62 63 64 |
# File 'lib/active_record/undo/model_extension.rb', line 56 def expired? return false unless soft_deleted? period = ActiveRecord::Undo.config.retention_period return false unless period = public_send(self.class.undoable_column) && < Time.current - period end |
#restore! ⇒ Object
rubocop:disable Naming/PredicateMethod
92 93 94 95 96 97 98 99 |
# File 'lib/active_record/undo/model_extension.rb', line 92 def restore! ensure_undoable_column_exists! return false unless soft_deleted? restore_internally!(find_latest_undo_log_item) reload true end |
#soft_delete! ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/active_record/undo/model_extension.rb', line 75 def soft_delete! ensure_undoable_column_exists! return false if soft_deleted? undo_log = nil = Time.current transaction do undo_log = ActiveRecord::Undo::UndoLog.create! soft_delete_cascade_internal!(, undo_log) undo_log.save! end undo_log end |
#soft_deleted? ⇒ Boolean
52 53 54 |
# File 'lib/active_record/undo/model_extension.rb', line 52 def soft_deleted? public_send(self.class.undoable_column).present? end |
#undoable? ⇒ Boolean
66 67 68 69 70 71 72 73 |
# File 'lib/active_record/undo/model_extension.rb', line 66 def undoable? return false unless soft_deleted? ActiveRecord::Undo::UndoLogItem.joins(:undo_log).exists?( item_type: self.class.name, item_id: id ) end |