Module: ActiveScaffold::Bridges::Bitfields::BitfieldsBridge

Defined in:
lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



36
37
38
39
# File 'lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb', line 36

def self.included(base)
  base.alias_method_chain :initialize, :bitfields
  base.alias_method_chain :_load_action_columns, :bitfields
end

Instance Method Details

#_load_action_columns_with_bitfieldsObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb', line 18

def _load_action_columns_with_bitfields
  model.bitfields.each do |column_name, options|
    columns = options.keys.sort_by { |column| self.columns[column].weight }
    [:create, :update, :show, :subform].each do |action|
      if actions.include? action
        if send(action).columns.include? column_name
          send(action).columns.exclude column_name
          send(action).columns.add_subgroup(column_name) { |group| group.add *columns }
        else
          send(action).columns.exclude *columns
        end
      end
    end
  end if model.respond_to?(:bitfields) && model.bitfields.present?

  _load_action_columns_without_bitfields
end

#initialize_with_bitfields(model_id) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb', line 5

def initialize_with_bitfields(model_id)
  initialize_without_bitfields(model_id)
  return unless model.respond_to?(:bitfields) && model.bitfields.present?

  model.bitfields.each do |_, options|
    columns << options.keys
    options.each do |column, value|
      columns[column].form_ui = :checkbox
      columns[column].weight = 1000 + value.to_s(2).size
    end
  end
end