module ActsAsCategorizable::Model::ClassMethods
Public Instance Methods
acts_as_categorizable(options = {})
click to toggle source
Makes ActiveRecord::Base object categorizable
# File lib/acts-as-categorizable/model.rb, line 14 def acts_as_categorizable(options = {}) default_options = { table_name: 'aac_categories', class_name: 'ActsAsCategorizable::Category', dependent: :nullify } options = default_options.merge(options) has_one :categorizable_category, class_name: 'ActsAsCategorizable::CategorizableCategory', as: :categorizable has_one :category, through: :categorizable_category, as: :categorizable, class_name: options[:class_name], dependent: options[:dependent] self.categories_class_name = options[:class_name].constantize self.categories_category_class_name = 'ActsAsCategorizable::CategorizableCategory'.constantize # Make categories behave like a tree self.categories_class_name.has_ancestry orphan_strategy: :adopt self.categories_class_name.table_name = options[:table_name] self.categories_class_name.initialize_scopes # Scopes scope :in_category, (-> (category) do joins(:categorizable_category) .where("#{self.categories_category_class_name.table_name}.category_id = ?", category.try(:id)) end) include ActsAsCategorizable::Model::InstanceMethods end