class DryAsFuckController < ActionController::Base
%w{index show new edit create update destroy}.each do |action|
before_filter "before_#{action}", :only => action
end
def index; end
def show; end
def new; end
def edit; end
def create; end
def update; end
def destroy; end
protected
def before_index
find_and_assign_single(Fuck)
end
def before_show
find_and_assign(Fuck, params[:id])
end
def before_new
initialize_and_assign(Fuck)
end
def before_edit
find_and_assign(Fuck, params[:id])
end
def before_create
initialize_and_assign(Fuck, params[:fuck]).save ? go_to_fuck : render :action => "new"
end
def before_update
find_and_assign(Fuck, params[:id]).update_attributes(params[:fuck]) ? go_to_fuck : render :action => "edit"
end
def before_destroy
find_and_assign(Fuck, params[:id]).destroy
redirect_to(fucks_url)
end
private
def find_and_assign_all(klass)
instance_variable_set("@#{klass.name.tableize}", klass.find(:all))
end
def find_and_assign(klass, id)
instance_variable_set("@#{klass.name.underscore}", klass.find(id))
end
def initialize_and_assign(klass, attributes = nil)
instance_variable_sest("@#{klass.name.underscore}", klass.new(attributes))
end
def go_to_fuck
redirect_to(@fuck)
end
end