diff options
Diffstat (limited to 'app/models/custom_field.rb')
| -rw-r--r-- | app/models/custom_field.rb | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 774c8b0f6..2572d5c80 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -6,4 +6,42 @@ class CustomField < ActiveRecord::Base    validates :name, uniqueness: {scope: [:resource_type, :workgroup_id]}    validates :code, uniqueness: {scope: [:resource_type, :workgroup_id], case_sensitive: false} + +  class Value +    def self.new custom_field, value +      field_type = custom_field.options["field_type"] +      klass_name = field_type && "CustomField::Value::#{field_type.classify}" +      klass = klass_name && const_defined?(klass_name) ? klass_name.constantize : CustomField::Value::Base +      klass.new custom_field, value +    end + +    class Base +      def initialize custom_field, value +        @custom_field = custom_field +        @raw_value = value +      end + +      %i(code name field_type options).each do |attr| +        define_method attr do +          @custom_field.send(attr) +        end +      end + +      def value +        @raw_value +      end +    end + +    class Integer < Base +      def value +        @raw_value.to_i +      end +    end + +    class String < Base +      def value +        "#{@raw_value}" +      end +    end +  end  end | 
