Class: CustomFieldPair

Inherits:
CustomField show all
Defined in:
app/models/fields/custom_field_pair.rb

Overview

Copyright © 2008-2013 Michael Dvorkin and contributors.

Fat Free CRM is freely distributable under the terms of MIT license. See MIT-LICENSE file or www.opensource.org/licenses/mit-license.php


Direct Known Subclasses

CustomFieldDatePair

Constant Summary

Constants inherited from CustomField

CustomField::SAFE_DB_TRANSITIONS

Constants inherited from Field

Field::BASE_FIELD_TYPES

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CustomField

#available_as, #custom_validator

Methods inherited from Field

#collection_string, #collection_string=, #column_type, field_types, #input_options, lookup_class, register, #render, #render_value

Class Method Details

.create_pair(params) ⇒ Object

Helper to create a pair. Used in fields_controller




13
14
15
16
17
18
19
20
21
22
# File 'app/models/fields/custom_field_pair.rb', line 13

def self.create_pair(params)
  fields = params['field']
  as = params['field']['as']
  pair = params.delete('pair')
  base_params = fields.delete_if { |k, _v| !%w[field_group_id label as].include?(k) }
  klass = ("custom_field_" + as.gsub('pair', '_pair')).classify.constantize
  field1 = klass.create(base_params.merge(pair['0']))
  field2 = klass.create(base_params.merge(pair['1']).merge('pair_id' => field1.id, 'required' => field1.required, 'disabled' => field1.disabled))
  [field1, field2]
end

.update_pair(params) ⇒ Object

Helper to update a pair. Used in fields_controller




26
27
28
29
30
31
32
33
34
35
# File 'app/models/fields/custom_field_pair.rb', line 26

def self.update_pair(params)
  fields = params['field']
  pair = params.delete('pair')
  base_params = fields.delete_if { |k, _v| !%w[field_group_id label as].include?(k) }
  field1 = CustomFieldPair.find(params['id'])
  field1.update_attributes(base_params.merge(pair['0']))
  field2 = field1.paired_with
  field2.update_attributes(base_params.merge(pair['1']).merge('required' => field1.required, 'disabled' => field1.disabled))
  [field1, field2]
end

Instance Method Details

#paired_withObject

Returns the field that this field is paired with




39
40
41
# File 'app/models/fields/custom_field_pair.rb', line 39

def paired_with
  pair || CustomFieldPair.where(pair_id: id).first
end