45 lines
		
	
	
		
			991 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			991 B
		
	
	
	
		
			Ruby
		
	
	
	
| module OrbitModel
 | |
| 
 | |
|   module Status
 | |
| 
 | |
|     def self.included(base)
 | |
|       base.extend ClassMethods
 | |
|       base.class_eval do
 | |
|         field :is_top, :type => Boolean, :default => false 
 | |
|         field :is_hot, :type => Boolean, :default => false 
 | |
|         field :is_hidden, :type => Boolean, :default => false
 | |
|         self.class_variable_defined?(:@@can_display) ? \
 | |
|         self.class_variable_set(:@@can_display, self.class_variable_get(:@@can_display).merge({is_hidden: false})) : \
 | |
|         self.class_variable_set(:@@can_display, {is_hidden: false})
 | |
|         send :include, InstanceMethods
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     module InstanceMethods
 | |
| 
 | |
|       def is_top?
 | |
|         self.is_top
 | |
|       end
 | |
|       
 | |
|       def is_hot?
 | |
|         self.is_hot
 | |
|       end
 | |
|       
 | |
|       def is_hidden?
 | |
|         self.is_hidden
 | |
|       end
 | |
|       
 | |
|     end
 | |
| 
 | |
|     module ClassMethods
 | |
| 
 | |
|       define_method(:can_display) do
 | |
|         where(class_variable_get(:@@can_display))
 | |
|       end unless method_defined? :can_display
 | |
| 
 | |
|     end
 | |
| 
 | |
|   end
 | |
| 
 | |
| end
 |