Rails 5: отношения «многие ко многим» и контроллеры - PullRequest
0 голосов
/ 29 октября 2018

За предыдущую публикацию я понимаю, как настроить мои таблицы / модели, чтобы я мог установить отношение «многие ко многим»

Однако я пытаюсь реализовать все это на 1 странице с помощью одной формы. (Единственная другая страница, которую увидят пользователи, это страница подтверждения после отправки формы, возможно, просто отображающая детали того, что они отправили)

Пользователь должен иметь возможность только обновлять количество любых доступных блюд. Затем я сделаю резервную копию базы данных в определенный день / время, и это будет заказ каждого пользователя на неделю. Из-за этого я перестроил свои таблицы следующим образом ...

Пользователь хранит информацию о пользователе.

user.rb

class User < ApplicationRecord
  has_many :mealselections
  has_many :meals, through: :mealselections
  accepts_nested_attributes_for :mealselections
end

Питание используется для отображения информации о еде для всех пользователей. (имя-еды, описание, img_url)

meal.rb

class Meal < ApplicationRecord
  has_many :mealselections
  has_many :users, through: :mealselections
end

MealSelection - это объединенная таблица, которая ссылается на выбранные пользователем блюда, а затем в эту таблицу добавляется дополнительный целочисленный столбец, который обозначает количество блюд, которое они хотят для каждого выбора блюд

mealselection.rb

class MealSelection < ApplicationRecord
  belongs_to :user
  belongs_to :meals
end

Итак, где я потерян, так это как использовать контроллер, чтобы иметь возможность выполнять функции CRUD из одной формы. Это имело больше смысла, когда у меня было отношение 1 к 1, поскольку я просто обновлял столбцы (food1, food2, food3) для соответствующего пользователя, и каждый столбец food # был создан со значением по умолчанию 0.

Однако теперь из-за того, как работают отношения «многие ко многим», я понимаю, что пользователь должен как минимум создавать и обновлять столбцы из одной и той же формы.

Поскольку я показываю это на одной странице (домашней странице), как мне сделать это в соответствующем HomeController с помощью одной формы / запроса?

1 Ответ

0 голосов
/ 29 октября 2018

Хотя и немного устаревшее, содержимое в http://railscasts.com/episodes/196-nested-model-form-revised демонстрирует общую технику, которая включает в себя изменение формы, когда пользователь делает выбор для создания, удаления или изменения полей вложенных моделей с использованием javascript. , Этот базовый принцип все еще широко используется, поскольку он опирается на логику вложенных атрибутов по умолчанию в контроллере и механизмы массового обновления модели. Есть некоторые незначительные изменения, которые вам, возможно, придется сделать, когда строгие параметры являются фактором, влияющим на более современные приложения, чем это было обычно во время создания контента. Просмотр кода для рассматриваемой формы и действий контроллера может помочь с более конкретным ответом.

...