65 lines
1.6 KiB
Ruby
65 lines
1.6 KiB
Ruby
module OrbitModel
|
|
|
|
module Approval
|
|
|
|
def self.included(base)
|
|
base.extend ClassMethods
|
|
base.class_eval do
|
|
field :is_checked, :type => Boolean, :default => false
|
|
field :is_pending, :type => Boolean, :default => true
|
|
field :is_rejected, :type => Boolean, :default => false
|
|
field :not_checked_reason
|
|
class_variable_defined?(:@@can_display) ? \
|
|
class_variable_set(:@@can_display, class_variable_get(:@@can_display).merge({is_checked: true, is_rejected: false, is_pending: false})) : \
|
|
class_variable_set(:@@can_display, {is_checked: true, is_rejected: false, is_pending: false})
|
|
send :include, InstanceMethods
|
|
end
|
|
end
|
|
|
|
module InstanceMethods
|
|
|
|
def de_pending
|
|
self.is_pending = false
|
|
end
|
|
|
|
def de_pending!
|
|
de_pending
|
|
self.save!
|
|
end
|
|
|
|
def is_checked?
|
|
!self.is_pending && self.is_checked && (self.is_rejected == false)
|
|
end
|
|
|
|
def is_pending?
|
|
self.is_pending
|
|
end
|
|
|
|
def is_rejected?
|
|
!self.is_pending && self.is_rejected && (self.is_rejected == true)
|
|
end
|
|
|
|
def proc_check(check,not_pass_info = "")
|
|
self.is_checked = true
|
|
if check == "true"
|
|
self.is_rejected = false
|
|
elsif check == "false"
|
|
self.is_rejected = true
|
|
self.not_checked_reason = not_pass_info
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
module ClassMethods
|
|
|
|
define_method(:can_display) do
|
|
where(class_variable_get(:@@can_display))
|
|
end unless method_defined? :can_display
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|