class ApplicationRecord < ActiveRecord::Base self.abstract_class = true QI_DYNAMICS_CORE = ' #START QI_DYNAMICS_CORE QI_DYNAMICS.each do |s| define_method("#{s}") { return eval("!self.ac_#{s} ? self.ca_#{s} : self.ac_#{s}") } end def qi_dynamics_cache QI_DYNAMICS.each do |s| eval("self.cc_#{s} = self.#{s}") end end after_validation :qi_dynamics_cache def archive_now self.qi_dynamics_cache self.archived = true QI_DYNAMICS.each do |s| eval("self.ac_#{s} = self.cc_#{s} ") end self.personalised_archive if self.methods.include?(:personalised_archive) self.save end def unarchive_now self.archived = false self.qi_dynamics_cache QI_DYNAMICS.each do |s| eval("self.ac_#{s} = nil ") end self.personalised_unarchive if self.methods.include?(:personalised_unarchive) self.save end #END QI_DYNAMICS_CORE ' end