В настоящее время появляется сообщение об ошибке:
PG::UndefinedColumn: ERROR: column "availability" of relation "users" does not exist LINE 1: UPDATE "users" SET "availability" = NULL WHERE "users"."id" ... ^ : UPDATE "users" SET "availability" = NULL WHERE "users"."id" IN (SELECT "users"."id" FROM "users" INNER JOIN "availabilities" ON "users"."id" = "availabilities"."user_id" WHERE "availabilities"."schedule_id" = $1)
Использование отношения has_many_through
с моделями следующим образом:
Модель пользователя:
has_many :availabilities
has_many :schedules, through: :availabilities
Модель расписания:
has_many :availabilities
has_many :users, through: :availabilities
Модель доступности:
belongs_to :user
belongs_to :schedule
Я думаю, что моя проблема заключается либо в моей маршрутизации, либо в моем действии контроллера.В настоящее время у меня есть маршрут, по которому выполняется выбор schedules/:id/selection
, который может быть частью моей проблемы?
rout.rb
resources :schedules do
collection do
put :selected
end
member do
get :available, :unavailable, :selection
end
end
schedules_controller.rb
# Available to play method
def available
if logged_in?
@schedule = Schedule.find(params[:id])
current_user.availabilities.create(schedule: @schedule)
redirect_to @schedule
end
end
# Unavailable to play method
def unavailable
if logged_in?
@schedule = Schedule.find(params[:id])
@availability = Availability.find_by(schedule_id: @schedule.id, user_id: current_user.id)
@availability.destroy
redirect_to @schedule
end
end
def selection
@schedule = Schedule.find(params[:id])
@users = @schedule.users
@users.update_all(availability: params[:user_ids])
end
и представление:
<div class="form-group row justify-content-center">
<div class="col-md-4">
<%= form_for(:availability, url: available_schedule_path) do |f| %>
<% @users.each do |user| %>
<%= f.label :user_id, class: 'checkbox inline' do %>
<%= f.check_box 'user_id[]', value: user.id %>
<span><%= user.name %></span>
<% end %>
<% end %>
</div>
<%= f.submit 'Set Lineup', class: 'btn btn-primary', method: :post %>
<% end %>
</div>
Редактировать:
Добавлены available
и unavailable
методы в schedules_controller
.
available
позволяютпользователь говорит, что они доступны для этого элемента.unavailable
отменяет это и уничтожает запись, так как мне не нужно хранить эту информацию.