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 |