繁体   English   中英

Rails 5:多对多关系和控制器

[英]Rails 5: Many-to-Many relationships and Controllers

在上一篇文章中 ,我了解如何设置表/模型,以便可以建立多对多关系

但是,我想做的是在1页上用1种形式实现所有这些功能。 (用户提交表单后,唯一会看到的页面是确认页面,可能只是显示其提交内容的详细信息)

用户只需要能够更新任何可用膳食的数量。 然后,我将在特定的日期/时间进行数据库备份,这将是一周中每个用户的命令。 因此,我将表重组如下:

用户存储用户的信息。

user.rb

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

膳食用于向所有用户显示膳食信息。 (餐名,描述,img_url)

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

MealSelection是联接的表,该表引用了用户选择的餐食,然后在此表中添加了一个附加的整数列,该整数列表示每个餐食选择他们想要的餐食数量

饭菜选择

class MealSelection < ApplicationRecord
  belongs_to :user
  belongs_to :meals
end

因此,我迷失的是如何利用控制器以单一形式执行CRUD功能。 当我具有1对1的关系时,这才有意义,因为我只是为相关用户更新列(meal1,meat2,meat3),并且每顿饭#列的默认值均为0。

但是,现在由于多对多关系的工作原理,我意识到用户至少必须从同一表单创建和更新列。

由于我将其显示在一页(主页)上,因此如何使用一种表单/请求在相应的HomeController中实现此目的?

尽管有些陈旧,但http://railscasts.com/episodes/196-nested-model-form-revised中的内容演示了一种常见技术,该技术涉及在用户选择创建,删除或修改表单时修改表单。使用javascript的嵌套模型的字段。 该基本原理仍然很常用,因为它依赖于控制器和模型批量更新机制中的默认嵌套属性逻辑。 对于强大的参数,您可能需要进行一些细微的调整,这是比内容生成时更常见的现代应用程序的一个因素。 查看有关表单和控制器操作的代码也可能有助于获得更具体的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM