40 lines
974 B
Ruby
40 lines
974 B
Ruby
class Table
|
|
include SimplyStored::Couch
|
|
|
|
property :number, type: Fixnum, default: 1
|
|
property :position_x, type: Float
|
|
property :position_y, type: Float
|
|
|
|
belongs_to :supplier
|
|
belongs_to :section
|
|
has_many :lists
|
|
|
|
attr_protected :supplier_id
|
|
|
|
validates :supplier_id, presence: true
|
|
#validates :list_id, presence: true
|
|
validates :number, numericality: {greater_than: 0}
|
|
view :by_supplier_id_and_id, key: [:supplier_id, :_id]
|
|
|
|
#validates_uniqueness_of :number
|
|
#view :by_number, key: :number # For uniqueness validation
|
|
|
|
def occupied?
|
|
return @is_occupied if instance_variable_defined?(:'@is_occupied')
|
|
@is_occupied = !self.class.database.view(List.active_by_table_id_view(key: id, reduce: true)).zero?
|
|
end
|
|
|
|
def active_list
|
|
@active_list ||= self.class.database.view(List.active_by_table_id_view(key: id, include_docs: true, reduce: false, limit: 1)).try(:first)
|
|
end
|
|
|
|
def reserved?
|
|
false
|
|
end
|
|
|
|
def name
|
|
number
|
|
end
|
|
|
|
end
|