ぼざクリタグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

25 lines
488 B

  1. module MyDiscard
  2. extend ActiveSupport::Concern
  3. included do
  4. include Discard::Model
  5. default_scope -> { kept }
  6. end
  7. class_methods do
  8. def find_undiscard_or_create_by! attrs, &block
  9. record = with_discarded.find_by(attrs)
  10. if record&.discarded?
  11. record.undiscard!
  12. record.update_columns(created_at: record.reload.updated_at)
  13. end
  14. record or create!(attrs, &block)
  15. rescue ActiveRecord::RecordNotUnique
  16. retry
  17. end
  18. end
  19. end