class Formize::Generator::Column

Attributes

column[R]
filter[R]
interpolation_key[R]
name[R]

Public Class Methods

new(model, name, options={}) click to toggle source

@@count = 0

# File lib/formize/generator.rb, line 9
def initialize(model, name, options={})
  @model = model
  @name = name.to_s
  @filter = options.delete(:filter) || "%X%"
  @code = options.delete(:code)
  @interpolation_key = options.delete(:interpolation_key) || @name.gsub(/\W/, '_')
  klass = @model
  @through = (options.delete(:through) || []).collect do |reflection|
    unless klass.reflections[reflection.to_sym]
      raise Exception.new("Model #{klass.name} has no reflections #{reflection.inspect}")
    end
    klass = klass.reflections[reflection.to_sym].class_name.constantize
    reflection.to_sym
  end || []
  @column = foreign_model.columns_hash[@name]
end

Public Instance Methods

foreign_model() click to toggle source
# File lib/formize/generator.rb, line 52
def foreign_model
  model = @model
  for reflection in @through
    model = model.reflections[reflection].class_name.constantize
  end
  return model
end
sql_name() click to toggle source
# File lib/formize/generator.rb, line 26
def sql_name
  return "#{foreign_model.table_name}.#{@name}"
end
type() click to toggle source
# File lib/formize/generator.rb, line 48
def type
  @column.type
end
value_code(record='record') click to toggle source
# File lib/formize/generator.rb, line 30
def value_code(record='record')
  code  = "("
  value = "(#{record}#{'.'+@through.join('.') unless @through.empty?}.#{name})"
  @through.each_index do |i|
    code << "#{record}.#{@through[0..i].join('.')}.nil? ? '' : "
  end
  code << if @code
            @code.gsub(/RECORD/, record).gsub(/DATUM/, value)
          elsif[:date, :datetime, :timestamp].include? self.type
            "(#{value}.nil? ? '' : ::I18n.localize(#{value}))"
          else
            value
          end
  code << ")"
  code << ".to_s" unless name.to_s == "count"
  return code
end