46 lines
1.0 KiB
Ruby
46 lines
1.0 KiB
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
|
|
# scope :can_display, where(is_hidden: 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
|