From a6728af39784728d0487fe2e02723c365c8e2c53 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Fri, 27 Mar 2015 18:20:29 -0500 Subject: [PATCH] Clean style in the EquipmentController --- app/controllers/equipment_controller.rb | 71 +++++++++++++++++-------- app/models/equipment.rb | 12 +++++ config/locales/en.yml | 3 ++ 3 files changed, 65 insertions(+), 21 deletions(-) diff --git a/app/controllers/equipment_controller.rb b/app/controllers/equipment_controller.rb index 0b4f03ba..18b03cb2 100644 --- a/app/controllers/equipment_controller.rb +++ b/app/controllers/equipment_controller.rb @@ -1,16 +1,17 @@ +# Controller for the Equipment model class EquipmentController < ApplicationController - before_action :create_anonymous_account_if_not_logged_in, only: [:edit, :create, :update] - before_action :require_ownership_of_equipment, only: [:update, :edit, :destroy] + before_action :create_anonymous_account_if_not_logged_in, + only: [:edit, :create, :update] + + before_action :require_ownership_of_equipment, + only: [:update, :edit, :destroy] + before_action :hide_private_equipment, only: [:show] def index - @equipment = Equipment.where(user_id: session[:user]) - - if @equipment.size == 0 - @equipment = [] - end - - @equipment = @equipment.sort { |a, b| a.name.downcase <=> b.name.downcase } + @equipment = Equipment + .where(user_id: session[:user]) + .order(:name).presence || [] respond_to do |format| format.html # index.html.erb @@ -41,39 +42,35 @@ class EquipmentController < ApplicationController end def create - @equipment = Equipment.create(equipment_params) - @equipment.user_id = session[:user] - @equipment.universe = Universe.where(user_id: session[:user]).where(name: params[:equipment][:universe].strip).first + @equipment = create_equipment_from_params + # rubocop:disable LineLength respond_to do |format| if @equipment.save - format.html { redirect_to @equipment, notice: 'Equipment was successfully created.' } + format.html { redirect_to @equipment, notice: t(:equipment_create_success) } format.json { render json: @equipment, status: :created, location: @equipment } else format.html { render action: 'new' } format.json { render json: @equipment.errors, status: :unprocessable_entity } end end + # rubocop:enable LineLength end def update - @equipment = Equipment.find(params[:id]) - - if params[:equipment][:universe].empty? - params[:equipment][:universe] = nil - else - params[:equipment][:universe] = Universe.where(user_id: session[:user]).where(name: params[:equipment][:universe].strip).first - end + @equipment = update_equipment_from_params + # rubocop:disable LineLength respond_to do |format| if @equipment.update_attributes(equipment_params) - format.html { redirect_to @equipment, notice: 'Equipment was successfully updated.' } + format.html { redirect_to @equipment, notice: t(:equipment_update_success) } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @equipment.errors, status: :unprocessable_entity } end end + # rubocop:enable LineLength end def destroy @@ -97,4 +94,36 @@ class EquipmentController < ApplicationController :magic, :notes, :private_notes) end + + def populate_universe_fields + @universe = Universe.where(user_id: session[:user], + name: params[:universe].strip).first + @equipment = + @equipment.where(universe_id: @universe.id) if @equipment.blank? + end + + def universe_from_equipment_params + Equipment.where(user_id: session[:user], + name: params[:equipment][:universe].strip).first.presence + end + + def create_equipment_from_params + equipment = Equipment.create(equipment_params) + equipment.user_id = session[:user] + equipment.universe = universe_from_equipment_params + equipment + end + + def update_equipment_from_params + params[:equipment][:universe] = universe_from_equipment_params + Equipment.find(params[:id]) + end + + def render_json_error_unprocessable + render json: @equipment.errors, status: :unprocessable_entity + end + + def render_html_success(notice) + redirect_to @equipment, notice: notice + end end diff --git a/app/models/equipment.rb b/app/models/equipment.rb index fa6d31f0..4381e9af 100644 --- a/app/models/equipment.rb +++ b/app/models/equipment.rb @@ -1,6 +1,18 @@ class Equipment < ActiveRecord::Base + include Comparable + validates_presence_of :name belongs_to :user belongs_to :universe + + before_save :nil_blank_universe + + def <=>(anOther) + name.downcase <=> anOther.name.downcase + end + + def nil_blank_universe + self.universe = nil if universe.blank? + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 3f682cd2..d9ddecd7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -16,3 +16,6 @@ en: character_create_success: "Character was successfully created." character_update_success: "Character was successfully updated." + + equipment_create_success: "Equipment was successfully created." + equipment_update_success: "Equipment was successfully updated." \ No newline at end of file