module CmAdmin::Models::DslMethod

def column(field_name, options={})

def column(field_name, options={})
  @available_fields[@current_action.name.to_sym] ||= []
  if @available_fields[@current_action.name.to_sym].select{|x| x.lockable}.size > 0 && options[:lockable]
    raise 'Only one column can be locked in a table.'
  end
  duplicate_columns = @available_fields[@current_action.name.to_sym].filter{|x| x.field_name.to_sym == field_name}
  terminate = false
  if duplicate_columns.size.positive?
    duplicate_columns.each do |column|
      if options[:field_type].to_s != 'association'
        terminate = true
      elsif options[:field_type].to_s == 'association' && column.association_name.to_s == options[:association_name].to_s
        terminate = true
      end
    end
  end
  unless terminate
    @available_fields[@current_action.name.to_sym] << CmAdmin::Models::Column.new(field_name, options)
  end
end