class Supplier include SimplyStored::Couch include Devise::Orm::SimplyStored devise :database_authenticatable, :recoverable, :rememberable, :trackable property :name #has_many :orders, through: :lists has_many :products, dependent: :destroy has_many :product_categories, dependent: :destroy has_many :tables, dependent: :destroy #has_many :lists, through: :tables has_many :orders has_many :sections, dependent: :destroy after_create :add_section_on_create def active_orders return @active_orders if @active_orders @active_orders = Order.active_for_supplier(id) @active_orders.include_relation(list: :table, product_orders: :order) @active_orders end def active_lists return @active_lists if @active_lists @tables ||= active_tables @tables.include_relation(:lists) @active_lists = @tables.map(&:lists).flatten.select(&:active?) @active_lists.include_relations(:table, orders: {product_orders: :product}) end def active_tables tables end def non_placed_tables tables.reject{|t| t.section_id.present? } end private def add_section_on_create @section = Section.create supplier: self, title: I18n.t('section.first_section_title') end end