custom_fielder 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25400fa066980421a9c8baec140f8b59b4eb1068
4
- data.tar.gz: 83acde8a17a5ecdd4dfb0091a9e79d70d704649e
3
+ metadata.gz: 3e99d0877255c6feab7652bd4fa0cc3e5ae95a76
4
+ data.tar.gz: 0d825d0f7af1a89e0bf680b399b3e7e7168521c1
5
5
  SHA512:
6
- metadata.gz: 070d4897d2cb4ee6f26b89cee76ff0ad7386d17a7fc2aad531625151ffb14af8fab80dff58eb7ff8547d0dfbd0f1cb17aed43f894290fb750744602cc3f56c3b
7
- data.tar.gz: 4a8bf34693dd7cbaa8c15730a1362168ccd85ba79bbec0b49c971c022c0750ca6d5da5c5fd3a4f3964fb5e268fe1959190f80e3015db125a22e499cc17fa2654
6
+ metadata.gz: 86626bfeb0a08b957ffad288338260add169e423f57e6781792ee03404db2dd20db82b9ac223fccbeba3e1a3d6c9edfa4958d0751cad938d34b772ed4fabd74e
7
+ data.tar.gz: 881e26cf496358268982bc42381a973e4e50e033782e3547eeb8fa8a84b734c7ecb75ccae64ef66e56bbc62e52976e897f76208793ab2b1010506ca00eb245e2
@@ -39,7 +39,7 @@ module CustomFielder
39
39
  ##
40
40
  # @return [Integer]
41
41
  #
42
- def integer(value)
42
+ def fixnum(value)
43
43
  value.to_i
44
44
  end
45
45
 
@@ -21,7 +21,7 @@ module CustomFielder
21
21
  ##
22
22
  # @return [Boolean]
23
23
  #
24
- def is_integer?(value)
24
+ def is_fixnum?(value)
25
25
  value =~ /^\d+$/
26
26
  end
27
27
 
@@ -1,14 +1,49 @@
1
1
  module CustomFielder
2
2
  class Field < ActiveRecord::Base
3
+ include TypeCheckingHelper
3
4
  include DeserializationHelper
4
5
 
6
+ FIELD_TYPE_MAP = {
7
+ 'Text' => 'String',
8
+ 'Integer' => 'Fixnum',
9
+ 'Decmial' => 'Float',
10
+ 'Date' => 'Date',
11
+ 'Date & Time' => 'DateTime',
12
+ 'True/False' => 'Boolean',
13
+ 'List' => 'Array'
14
+ }
15
+
16
+ FORM_FIELD_TYPES = ['Text Entry', 'Multiple Choice', 'Date', 'DateTime', 'Boolean', 'List']
17
+
5
18
  has_many :values
6
19
 
7
- validates :name, presence: true
8
- validates :field_type, presence: true,
9
- inclusion: { in: %w[Array Integer Float Date DateTime Boolean String] }
10
- validates :fieldable_type, presence: true
11
- validates :allow_blank, inclusion: { in: [true, false] }
20
+ validates :name, presence: true
21
+ validates :field_type, presence: true,
22
+ inclusion: { in: %w[Array Fixnum Float Date DateTime Boolean String] }
23
+ validates :fieldable_type, presence: true
24
+ validates :allow_blank, inclusion: { in: [true, false] }
25
+ validate :type_of_allowed_values
26
+
27
+ scope :text_entry_fields, -> { all.where(field_type: ['String', 'Fixnum', 'Float'], allowed_values: nil) }
28
+ scope :multiple_choice_fields, -> { all.where.not(allowed_values: nil) }
29
+ scope :date_fields, -> { all.where(field_type: 'Date', allowed_values: nil) }
30
+ scope :date_time_fields, -> { all.where(field_type: 'DateTime', allowed_values: nil) }
31
+ scope :boolean_fields, -> { all.where(field_type: 'Boolean', allowed_values: nil) }
32
+ scope :list_fields, -> { all.where(field_type: 'Array') }
33
+
34
+ ##
35
+ # Creates a hash of form field types mapped to array of field, field id pairs
36
+ # meant for use in a form select dropdown with options group
37
+ #
38
+ # @return [Hash]
39
+ #
40
+ def self.all_fields_hashed_for_opt_group
41
+ FORM_FIELD_TYPES.inject(Hash.new) do |hash, form_field|
42
+ fields = send("#{form_field.delete(' ').underscore}_fields")
43
+ hash[form_field] = fields.map { |field| [field, field.id] }
44
+ hash
45
+ end.delete_if { |k, v| v == [] }
46
+ end
12
47
 
13
48
  ##
14
49
  # Returns the deserialized version of allowed_values
@@ -19,5 +54,27 @@ module CustomFielder
19
54
  allowed_values.nil? ? nil : deserialize('Array', allowed_values)
20
55
  end
21
56
 
57
+
58
+ private
59
+
60
+ ##
61
+ # Checks to make sure all values in allowed_values are of the correct type
62
+ #
63
+ # @return [Nil]
64
+ #
65
+ def type_of_allowed_values
66
+ return if allowed_values.nil?
67
+ options.each { |v| allowed_values_error unless v.class.to_s == field_type }
68
+ end
69
+
70
+ ##
71
+ # Adds error if there is an allowed_values_error
72
+ #
73
+ # @return [Nil]
74
+ #
75
+ def allowed_values_error
76
+ errors.add(:allowed_values, 'Value in options is not the correct type')
77
+ end
78
+
22
79
  end
23
80
  end
@@ -1,3 +1,3 @@
1
1
  module CustomFielder
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom_fielder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Hurst