Class: Lolita::Configuration::Field::Array

Inherits:
Base show all
Defined in:
lib/lolita/configuration/field/array.rb

Instance Attribute Summary

Attributes inherited from Base

#dbi, #nested_in

Instance Method Summary collapse

Methods inherited from Base

#name=, #nested?, #nested_in?, #record_value, #set_attributes, #type, #type=, #type_name, #value, #value=

Methods included from Builder

#build, #builder_options, #default_builder, #get_builder

Constructor Details

#initialize(*args, &block) ⇒ Array

Returns a new instance of Array.



7
8
9
10
11
12
13
# File 'lib/lolita/configuration/field/array.rb', line 7

def initialize *args,&block
  @type="array"
  self.builder="select"
  @include_blank=true
  super
  set_association_type
end

Instance Method Details

#association_valuesObject

Collect values for array type field. Uses text_method for content. By default it search for first String type field in DB. Uses value_method for value, by default it it is id. Use conditions or find_options for advanced search. When find_options is used, than conditions is ignored.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/lolita/configuration/field/array.rb', line 30

def association_values() #TODO test
    @association_values||=if options_for_select
    options_for_select
  elsif @association
    klass=@dbi.association_class_name(@association).camelize.constantize
    current_text_method=@text_method || default_text_method(klass)
    current_value_method=@value_method || :id
    options=@find_options || {}
    options[:conditions]||=@conditions

    klass.find(:all,options).map{|r|
      [r.send(current_text_method),r.send(current_value_method)]
    }
  else
    []
  end
  @association_values
end

#options_for_select(value = nil, &block) ⇒ Object



19
20
21
22
# File 'lib/lolita/configuration/field/array.rb', line 19

def options_for_select value=nil, &block
  @options_for_select=value || block if value || block_given?
  @options_for_select
end

#options_for_select=(value = nil) ⇒ Object



15
16
17
# File 'lib/lolita/configuration/field/array.rb', line 15

def options_for_select=(value=nil)
  @options_for_select=value
end