Skip to content

Commit a0ef604

Browse files
Added validations to model file and added default value for status to schema/model for requests
1 parent a19451d commit a0ef604

5 files changed

Lines changed: 38 additions & 16 deletions

File tree

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,52 @@
11
class RequestsController < ApplicationController
2+
before_action :set_request, only: %i[show edit update]
3+
24
def index
35
@requests = current_user.charity.requests
46
end
57

68
def show
7-
@request = Request.find(params[:id])
89
end
910

1011
def new
1112
@request = Request.new
1213
end
1314

1415
def create
16+
if current_user.charity.nil?
17+
redirect_to root_path
18+
return
19+
end
1520
@request = Request.new(request_params)
1621
@request.charity = current_user.charity
17-
if @request.save
18-
redirect_to requests_path
19-
else
20-
render :new, status: :unprocessable_entity
21-
end
22+
@request.save ? redirect_to(requests_path) : render(:new, status: :unprocessable_entity)
2223
end
2324

2425
def edit
25-
@request = Request.find(params[:id])
2626
end
2727

2828
def update
29-
@request = Request.find(params[:id])
3029
if @request.update(request_params)
3130
redirect_to requests_path
3231
else
3332
render :edit, status: :unprocessable_entity
3433
end
3534
end
3635

37-
def activate
38-
end
36+
# def activate
37+
# end
3938

40-
def deactivate
41-
end
39+
# def deactivate
40+
# end
4241

4342
private
4443

44+
def set_request
45+
@request = Request.find(params[:id])
46+
end
47+
4548
def request_params
4649
params.require(:request).permit(:title, :category, :description, :quantity_needed, :quantity_remaining, :units,
47-
:condition, :region, :city, :urgency, :status)
50+
:condition, :region, :city, :urgency)
4851
end
4952
end

app/models/request.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
11
class Request < ApplicationRecord
22
belongs_to :charity
33
has_many :offers
4+
5+
STATUSES = %w[active inactive fulfilled]
6+
7+
after_initialize :set_default_status, if: :new_record?
8+
9+
validates :title, :category, :description, :units, :condition, :region, :city, :urgency, presence: true
10+
validates :status, inclusion: { in: STATUSES }
11+
validates :quantity_needed, :quantity_remaining, numericality: { greater_than_or_equal_to: 0 }
12+
13+
private
14+
15+
def set_default_status
16+
self.status ||= "inactive"
17+
end
418
end

app/views/requests/_request_form.html.erb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<%= simple_form_for request do |f| %>
22
<%= f.input :title %>
3-
<%= f.input :status %>
43
<%= f.input :region %>
54
<%= f.input :quantity_needed %>
65
<%= f.input :quantity_remaining %>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class AddDefaultStatusToRequests < ActiveRecord::Migration[8.1]
2+
def change
3+
change_column_default :requests, :status, from: nil, to: "inactive"
4+
change_column_null :requests, :status, false, "inactive"
5+
end
6+
end

db/schema.rb

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)