Sha256: 28a5bb2ea9f640293f161e31cd879e0b911f9efad1a3266c5fc0412e447ff100
Contents?: true
Size: 1.32 KB
Versions: 3
Compression:
Stored size: 1.32 KB
Contents
module ComfyPress::IsCategorized def self.included(base) base.send :extend, ClassMethods end module ClassMethods def cms_is_categorized include ComfyPress::IsCategorized::InstanceMethods has_many :categorizations, :as => :categorized, :class_name => 'Cms::Categorization', :dependent => :destroy has_many :categories, :through => :categorizations, :class_name => 'Cms::Category' attr_accessor :category_ids after_save :sync_categories scope :for_category, lambda { |*categories| if (categories = [categories].flatten.compact).present? select("DISTINCT #{table_name}.*"). joins(:categorizations => :category). where('cms_categories.label' => categories) end } end end module InstanceMethods def sync_categories (self.category_ids || {}).each do |category_id, flag| case flag.to_i when 1 if category = Cms::Category.find_by_id(category_id) category.categorizations.create(:categorized => self) end when 0 self.categorizations.where(:category_id => category_id).destroy_all end end end end end ActiveRecord::Base.send :include, ComfyPress::IsCategorized
Version data entries
3 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
comfypress-0.1.4 | db/lib/comfypress/extensions/is_categorized.rb |
comfypress-0.1.4 | lib/comfypress/extensions/is_categorized.rb |
comfypress-0.1.3 | lib/comfypress/extensions/is_categorized.rb |