Sha256: 74558894c7d5675806811637161c136423763c1c98d2223a777041cece895c7e
Contents?: true
Size: 1.18 KB
Versions: 15
Compression:
Stored size: 1.18 KB
Contents
module ExpressAdmin module Commands def self.included(base) base.class_eval do include InstanceMethods extend ClassMethods class_attribute :commands self.commands = [] end end module ClassMethods def exposes_command(command) command = { name: command } if command.is_a?(Symbol) exposes_commands command end def exposes_commands(*commands) self.commands += commands end end module InstanceMethods # If not using, AASM, override this for disallowing commands def unavailable_commands [] end def available_commands if respond_to?(:aasm) command_names & aasm_event_triggers else command_names - unavailable_commands end end protected def aasm_event_triggers aasm.events.map(&:name).map(&:to_s).map {|s| "#{s}!"}.map(&:to_sym) end private def command_names commands.map { |command| command[:name] } end end end end ActiveRecord::Base.include(ExpressAdmin::Commands) class Symbol def debang to_s.gsub(/\!\Z/, '').to_sym end end
Version data entries
15 entries across 15 versions & 1 rubygems