Sha256: 842dc42b4b54be2ab5c400eaead74018a7c37fa645e991d2b2a52a5365e05861
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true module InvisibleRecord # Helps other modules complete methods module Helper def self.define_actions(klass, deleted_ts_attr:) klass.define_method "restore" do |*_args| assign_timestamp = "#{deleted_ts_attr}=" send(assign_timestamp, nil) end klass.define_method "restore!" do |*_args| restore save! end klass.define_method "soft_delete" do |*args| options = args.last || {} options[:datetime] ||= DateTime.now assign_timestamp = "#{deleted_ts_attr}=" send(assign_timestamp, options[:datetime]) end klass.define_method "soft_delete!" do |*_args| soft_delete save! end end def self.define_hidden_attributes(klass, deleted_ts_attr:) klass.attribute_names.each do |attribute| klass.define_method attribute do |*_args| return attributes[deleted_ts_attr] if attribute == deleted_ts_attr if attributes[deleted_ts_attr].present? nil else attributes[attribute] end end klass.define_method "hidden_#{attribute}" do |*_args| attributes[attribute] end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
invisible_record-0.1.2 | lib/invisible_record/helper.rb |
invisible_record-0.1.1 | lib/invisible_record/helper.rb |