Sha256: 8c3795e2f859186df64bff978eb4332cb86b04ea3fd603008f4e31340f882961
Contents?: true
Size: 1.52 KB
Versions: 3
Compression:
Stored size: 1.52 KB
Contents
module Polyblock module HasPolyblock extend ActiveSupport::Concern included do end module ClassMethods def has_polyblock(name, options={}) defaults = Polyblock::Block::DEFAULTS settings = defaults.deep_merge(options) has_one name, -> { where(:name => name) }, settings[:association] accepts_nested_attributes_for name, settings[:nested_attributes] cattr_accessor "#{name}_settings".to_sym send("#{name}_settings=".to_sym, settings) after_initialize do send("build_#{name}".to_sym) if send(name.to_sym).nil? # send(name.to_sym).settings = settings end include Polyblock::HasPolyblock::LocalInstanceMethods end def polyblocks Polyblock::Block.select('polyblock_blocks.name') .where(:contentable_type => self.name) .group('polyblock_blocks.name') .map(&:name) end def has_polyblock?(name) self.polyblocks.include?(name) end end module LocalInstanceMethods def has_polyblock_content_for?(name) !self.send(name).nil? and !self.send(name).content.blank? end def polyblocks Polyblock::Block.select('polyblock_blocks.name') .where(:contentable => self) .group('polyblock_blocks.name') .map(&:name) end def has_polyblock?(name) polyblocks.include?(name) end end end end if defined? ActiveRecord ActiveRecord::Base.send :include, Polyblock::HasPolyblock end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
polyblock-1.2.6 | lib/polyblock/has_polyblock.rb |
polyblock-1.2.5 | lib/polyblock/has_polyblock.rb |
polyblock-1.2.4 | lib/polyblock/has_polyblock.rb |