aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/export/base.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/export/base.rb')
-rw-r--r--app/models/export/base.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/app/models/export/base.rb b/app/models/export/base.rb
index 844c66d82..350edd215 100644
--- a/app/models/export/base.rb
+++ b/app/models/export/base.rb
@@ -1,6 +1,8 @@
class Export::Base < ActiveRecord::Base
self.table_name = "exports"
+ validates :type, presence: true
+
def self.messages_class_name
"Export::Message"
end
@@ -9,12 +11,56 @@ class Export::Base < ActiveRecord::Base
"Export::Resource"
end
+ def self.human_name
+ self.name.demodulize.humanize
+ end
+
+ if Rails.env.development?
+ def self.force_load_descendants
+ path = Rails.root.join 'app/models/export'
+ Dir.chdir path do
+ Dir['**/*.rb'].each do |src|
+ next if src =~ /^base/
+ klass_name = "Export::#{src[0..-4].classify}"
+ Rails.logger.info "Loading #{klass_name}"
+ begin
+ klass_name.constantize
+ rescue => e
+ Rails.logger.info "Failed: #{e.message}"
+ nil
+ end
+ end
+ end
+ end
+ end
+
+ def self.option name, opts
+ store_accessor :options, name
+ if !!opts[:required]
+ validates name, presence: true
+ end
+ @options ||= {}
+ @options[name] = opts
+ end
+
+ def self.options
+ @options
+ end
+
include IevInterfaces::Task
def self.model_name
ActiveModel::Name.new Export::Base, Export::Base, "Export"
end
+ def self.user_visible_descendants
+ descendants.select &:user_visible?
+ end
+
+ def self.user_visible?
+ true
+ end
+
private
def initialize_fields