diff --git a/app/controllers/memberships_controller.rb b/app/controllers/memberships_controller.rb index a722b0d..6c22e4f 100644 --- a/app/controllers/memberships_controller.rb +++ b/app/controllers/memberships_controller.rb @@ -30,6 +30,9 @@ class MembershipsController < ApplicationController format.html { redirect_to membership_url(@membership), notice: "Membership was successfully created." } format.json { render :show, status: :created, location: @membership } else + # TODO maybe doing something wrong but the variables of new need to be reinitialized here :D + @users = User.all + @beerclubs = Beerclub.all format.html { render :new, status: :unprocessable_entity } format.json { render json: @membership.errors, status: :unprocessable_entity } end diff --git a/app/models/membership.rb b/app/models/membership.rb index 68e730d..69b4aa0 100644 --- a/app/models/membership.rb +++ b/app/models/membership.rb @@ -1,4 +1,12 @@ class Membership < ApplicationRecord belongs_to :user belongs_to :beerclub + + validate :user_not_in_club + + def user_not_in_club + if not Membership.find_by(user_id:user_id, beerclub_id:beerclub_id).nil? + errors.add :user_id, "is already in the beerclub" + end + end end diff --git a/app/views/memberships/_form.html.erb b/app/views/memberships/_form.html.erb index 9e6ad2c..185b2db 100644 --- a/app/views/memberships/_form.html.erb +++ b/app/views/memberships/_form.html.erb @@ -12,8 +12,8 @@ <% end %>