class MetadataType
Constants
- DATATYPES
Public Class Methods
default()
click to toggle source
# File lib/metadata/metadata_type.rb, line 22 def self.default self.new({ :tag => :sample, :name => "Sample", :models => [:any], :mandatory => false, :multiple => false, :default => 'default', :datatype => "string", :format => nil, :values => nil }) end
Public Instance Methods
type_cast(value)
click to toggle source
# File lib/metadata/metadata_type.rb, line 36 def type_cast(value) return value.delete_if(&:blank?).map {|x| type_cast x } if value.is_a? Array return nil if value.nil? && datatype != 'boolean' return value unless value.is_a?(String) || value.nil? case datatype when 'date' ActiveRecord::ConnectionAdapters::Column.string_to_date value when 'datetime' ActiveRecord::ConnectionAdapters::Column.string_to_time value when 'number' Integer value when 'boolean' ActiveRecord::ConnectionAdapters::Column.value_to_boolean value else value end rescue nil end
values=(value)
click to toggle source
Calls superclass method
# File lib/metadata/metadata_type.rb, line 55 def values= value value = value.invert.to_a if value.is_a?(Hash) super end
Private Instance Methods
drop_metadata_scheme_cache(scope_column=nil, scope_value=nil)
click to toggle source
# File lib/metadata/metadata_type.rb, line 61 def drop_metadata_scheme_cache scope_column=nil, scope_value=nil Rails.cache.delete("metadata_scheme_#{scope_column}#{scope_value}_data") Rails.cache.delete("metadata_scheme_#{scope_column}#{scope_value}_types") Rails.cache.delete("metadata_scheme_#{scope_column}#{scope_value}_modeltypes") end
refresh_metadata()
click to toggle source
# File lib/metadata/metadata_type.rb, line 73 def refresh_metadata drop_metadata_scheme_cache model_classes = models.include?(:any) ? ObjectSpace.each_object(Class).select {|klass| klass < ActiveRecord::Base } : models.map {|model| Kernel.const_get model } scope_columns = [] model_classes.each do |model| model scope_columns << model.metadata_scope if model.respond_to? :metadata_scope end scope_columns.uniq.compact.each do |scope_column| drop_metadata_scheme_cache scope_column, send(scope_column) end end
set_correct_values()
click to toggle source
# File lib/metadata/metadata_type.rb, line 67 def set_correct_values self.models = (models || []).map(&:to_sym).uniq.keep_if {|model| Kernel.const_defined?(model.capitalize) || model == :any } self.values = (values || []).uniq self.default = type_cast default end