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
# File 'app/models/fields/custom_field_pair.rb', line 13

def self.create_pair(params)
  fields = params['field']
  pair = params['pair']
  base_params = fields.delete_if { |k, _v| !%w[field_group_id label as].include?(k) }
  klass = Field.lookup_class(fields['as']).safe_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




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

def self.update_pair(params)
  fields = params['field']
  pair = params['pair']
  base_params = fields.delete_if { |k, _v| !%w[field_group_id label as].include?(k) }
  field1 = CustomFieldPair.find(pair['0']['id'])
  field1.update(base_params.merge(pair['0']))
  field2 = field1.paired_with
  field2.update(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 (bi-directional)




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

def paired_with
  pair || self.class.find_by_id(pair_id)
end