Files
fixin.me/app/controllers/measurements_controller.rb
2026-04-02 16:20:59 +00:00

40 lines
1.1 KiB
Ruby

class MeasurementsController < ApplicationController
before_action :find_readout, only: :destroy
before_action except: :index do
raise AccessForbidden unless current_user.at_least(:active)
end
def index
@measurements = current_user.readouts.includes(:quantity, :unit).order(created_at: :desc)
end
def new
@quantities = current_user.quantities.ordered
end
def create
readout_params = params.permit(readouts: Readout::ATTRIBUTES).fetch(:readouts, [])
@readouts = readout_params.map { |rp| current_user.readouts.build(rp) }
if @readouts.present? && @readouts.all?(&:valid?)
ActiveRecord::Base.transaction { @readouts.each(&:save!) }
flash.now[:notice] = t('.success', count: @readouts.size)
else
errors = @readouts.flat_map { |r| r.errors.full_messages }
flash.now[:alert] = errors.present? ? errors.first : t('.no_readouts')
end
end
def destroy
@readout.destroy!
flash.now[:notice] = t('.success')
end
private
def find_readout
@readout = current_user.readouts.find(params[:id])
end
end