def edit_table_field
fld = params[:field].to_sym
begin
@field = @model.extra_listable_attributes.select {|a|
a.name.to_sym == fld }[0] or raise NameError
rescue NameError
redirect_to :action => 'list_table_fields', :table => @table
flash[:error] << _('Invalid field specified')
return false
end
return true unless request.post?
name = @field.name
default = params[:default]
default = nil if default.blank?
null = (params[:null_ok] == true)
redirect_to :action => :list_table_fields, :table => @table
begin
@model.connection.change_column_default(@table, name, default)
rescue ActiveRecord::StatementInvalid => err
flash[:error] << _('Error setting the requested default value: %s') %
err
return false
end
if null
@model.connection.change_column_null(@table, name, true)
elsif !@field.null
else
if ! @field.default.blank?
begin
@model.connection.select_all("UPDATE %s set %s = %s WHERE %s IS NULL"%
[@table, name, @field.default,
name])
@model.connection.change_column_null(@table, name, false)
rescue ActiveRecord::StatementInvalid => err
flash[:error] << _("Error setting the field as not null: %s") % err
return false
end
else
flash[:error] << _('Cannot set field %s to reject null values: No ' +
'default value ') % name
return false
end
end
flash[:notice] << _("The field's values were correctly updated")
end