lib/zertico/service.rb in zertico-2.0.0.alpha.1 vs lib/zertico/service.rb in zertico-2.0.0.alpha.2

- old
+ new

@@ -1,9 +1,38 @@ module Zertico class Service + attr_reader :interface_class, :interface_name, :interface_id + autoload :ClassMethods, 'zertico/service/class_methods' autoload :InstanceMethods, 'zertico/service/instance_methods' extend ClassMethods include InstanceMethods + + def initialize(options = {}) + @interface_class = options.fetch(:interface_class, self.class.interface_class) + @interface_class ||= custom_interface_class + @interface_name = options.fetch(:interface_name, self.class.interface_name) + @interface_name ||= interface_class.name.singularize.underscore + @interface_id = options.fetch(:interface_id, self.class.interface_id) + @interface_id ||= custom_interface_id + end + + private + + def custom_interface_class + self.class.name.chomp('Service').singularize.constantize + rescue NameError + self.class.name.chomp('Service').split('::').last.singularize.constantize + end + + def custom_interface_id + if self.class.name.chomp('Controller').split('::').size > 1 + "#{interface_name.gsub('/', '_')}_id" + else + 'id' + end + rescue NameError + 'id' + end end end \ No newline at end of file