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] view :by_supplier_id_and_number, key: [:supplier_id, :number] #validates_uniqueness_of :number view :by_number, key: :number def self.for_supplier(supplier, options = {}) startkey = options[:from_number].present? ? [supplier.id, options.delete(:from_number).to_i] : [supplier.id] endkey = options[:to_number].present? ? [supplier.id, options.delete(:to_number).to_i]: [supplier.id, {}] total_entries = database.view(by_supplier_id_and_number({startkey: startkey, endkey: endkey, include_docs: false, reduce: true})) options[:total_entries] = total_entries with_pagination_options(options) do |options| database.view(by_supplier_id_and_number({startkey: startkey, endkey: endkey, include_docs: true, reduce: false}.merge(options))) end end 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 # Method returning the sections table width def width 2.0 end # Method returning the sections table height def height 2.0 end end