YaleSTC/shifts

View on GitHub
app/controllers/data_fields_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class DataFieldsController < ApplicationController
  before_filter :require_department_admin
    before_filter :check_for_data_type
  
  def index
    @data_fields = DataField.find_all_by_data_type_id(params[:data_type_id])
  end
  
  def show
    @data_field = DataField.find(params[:id])
  end
  
  def new
    @data_field = DataField.new
  end
  
  def create
    @data_field = DataField.new(params[:data_field])
    @data_field.data_type_id = params[:data_type_id]
    if @data_field.save
      flash[:notice] = "Successfully created data field."
      redirect_to (params[:add_another] ? new_data_type_data_field_path(params[:data_type_id]) : (data_type_path(params[:data_type_id]) ))
    else
      render action: 'new'
    end
  end
  
  def edit
    @data_field = DataField.find(params[:id])
  end
  
  def update
    @data_field = DataField.find(params[:id])
    if @data_field.update_attributes(params[:data_field])
      flash[:notice] = "Successfully updated data field."
      redirect_to (params[:add_another] ? new_data_type_data_field_path(params[:data_type_id]) : data_type_path(params[:data_type_id]))
    else
      render action: 'edit'
    end
  end
  
  def destroy
    @data_field = DataField.find(params[:id])
    @data_type = @data_field.data_type
    @data_field.active = false
    @data_field.save
    flash[:notice] = "Successfully destroyed data field."
    redirect_to data_type_path(@data_type)
  end
    
  private
  
  # Intercept and redirect if no data type id provided
  def check_for_data_type
    unless params[:data_type_id]
      flash[:error] = "You must specify a data type before viewing associated
                      data fields."
      redirect_to data_types_path
    end
  end
  
end