Я создаю веб-приложение для пожертвований, и меня смущает вопрос, почему форма сохраняется только для моего current_user при первом пожертвовании. Если я иду к тому же получателю и добавляю целое число к любой данной категории (создаю новое пожертвование), оно не будет сохранено в current_user, но будет сохранено в БД. Вот соответствующий код:
class CategoriesController < ApplicationController
def new
@category = current_user.categories.new
end
def create
@category = current_user.categories.new(category_params)
if @category.save
redirect_to donor_interface_path
else
render 'categories/_form', alert: "Your donation was not saved."
end
end
def edit
@category = Category.find_by(params[:donor_id])
end
def update
@category = Category.find_by(params[:donor_id])
if @category.update(category_params)
redirect_to donor_interface_path
else
render :edit
end
end
form_for
<%= form_for(@category) do |f| %>
<div class="form-group">
<%= hidden_field_tag :category_id, @category_id, class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :toilet_paper %><br>
<%= f.text_field :toilet_paper, class: "form-control" %></div>
<div class="form-group">
<%= f.label :dental_hygiene %><br>
<%= f.text_field :dental_hygiene, class: "form-control" %></div>
На обеих страницах редактирования / новых
<%= render "categories/form", category: @category %>
ApplicationController, показывающий код current_user
def current_user
@current_user ||= Donor.find(session[:user_id]) if session[:user_id]
end
AR
class Category < ApplicationRecord
has_many :recipients
has_many :donors, through: :recipients
class Donor < ApplicationRecord
has_many :recipients
has_many :categories, through: :recipients**strong text**
class Recipient < ApplicationRecord
belongs_to :donor
belongs_to :category