Module: Polyblock::HasPolyblock::ClassMethods

Defined in:
lib/polyblock/has_polyblock.rb

Instance Method Summary collapse

Instance Method Details

#has_polyblock(name, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/polyblock/has_polyblock.rb', line 9

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

#has_polyblock?(name) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/polyblock/has_polyblock.rb', line 31

def has_polyblock?(name)
  self.polyblocks.include?(name)
end

#polyblocksObject



25
26
27
28
29
30
# File 'lib/polyblock/has_polyblock.rb', line 25

def polyblocks
  Polyblock::Block.select('polyblock_blocks.name')
    .where(:contentable_type => self.name)
    .group('polyblock_blocks.name')
    .map(&:name)
end