嵌套形式和 habtm

2024-04-18

我正在尝试保存到 habtm 关系中的联接表,但遇到问题。

在我看来,我传递的组 ID 为:

<%= link_to "Create New User", new_user_url(:group => 1) %>

 

# User model (user.rb)
class User < ActiveRecord::Base  
  has_and_belongs_to_many :user_groups
  accepts_nested_attributes_for :user_groups
end

 

# UserGroups model (user_groups.rb)
class UserGroup < ActiveRecord::Base
  has_and_belongs_to_many :users
end

 

# users_controller.rb
def new
  @user = User.new(:user_group_ids => params[:group])
end

在新的用户视图中,我可以访问 User.user_groups 对象,但是当我提交表单时,它不仅不会保存到我的联接表(user_groups_users)中,而且该对象不再存在。除了用户组之外,我的用户对象的所有其他对象和属性都是持久的。

我刚刚开始学习 Rails,所以也许我在概念上遗漏了一些东西,但我一直在努力解决这个问题。


您是否考虑过将用户添加到控制器中的组中,而不是使用accepts_nested_attributes_for?这样你就不需要来回传递 user_group_id 。

在users_controller.rb中:

def create
  @user = User.new params[:user]
  @user.user_groups << UserGroup.find(group_id_you_wanted)
end

这样,您还可以阻止人们修改表单并将自己添加到他们想要的任何组中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套形式和 habtm 的相关文章

随机推荐

  • 使用 Jade 的 :markdown 过滤器时是否可以包含外部文件?

    我正在构建一个 Express js Node 应用程序并使用 Jade 模板 玉石提供了一个 markdown允许在 Jade 中嵌入 Markdown 代码的过滤器 h1 This is Jade markdown And this i
  • Django - 使用 jwplayer 显示视频

    我目前正在尝试使用 jwplayer 在网站上显示视频 页面的视图是 def video request return render to response video player video html context instance
  • 带有 wget 的 crontab - 为什么它运行两次?

    我有一个从 web 服务运行并插入到数据库的 php 脚本 crontab e other cron tasks above Run test script php at 1610 10 16 usr bin wget q O home u
  • 如何从 LLVM 的中间表示中获取程序每个函数中执行的函数调用列表?

    我正在尝试使用 LLVM 构建一个简单版本的代码分析工具 我有一些 ll 文件 其中包含某些程序的中间 LLVM 表示 如何从 LLVM 的中间表示中获取程序每个函数中执行的函数调用列表 我的输入参数是 LLVM Module 类的一个实例
  • 是否存在限制解决方案的访问修饰符?

    在我的 NET 解决方案中 我有两个项目 一个主项目和一个用于针对主项目运行测试的项目 在我的项目中 我有几种想要保持 私有 的方法 但也想对其运行测试 是否有一种访问方法可以将这些功能限制在我的解决方案内部 您正在寻找内部可见 https
  • 如何在 python 中编写 argparse 组合选项

    我一直为完成这个小小的活动而烦恼 我确实做了一些实验 但未能达到结果 要求 test2 py c v f 使用或规则 c 比较 有 2 个参数 v 验证 采用 1 个参数 Either这两个必须存在 但不是两者都 f 是强制参数 输出文件名
  • Fancybox:获取单击的锚点/元素的ID

    我正在尝试获取 fancybox 中单击 显示的元素的 id 我已经尝试过 this id 和 this attr id 但它们都不起作用 a lightbox image fancybox transitionIn elastic tra
  • 通过负索引访问数组的元素

    我想通过任意索引访问数组的内容 假设我们有一个包含三个元素的数组 模在这里派上用场 完美地解决了任何正整数的问题 var arr array foo bar foobar var someInteger 3 var element arra
  • 如何在 vue.config.js 中设置用于生产的 API 路径?

    我使用 vue cli3 进行设置 我已经在中设置了 devServer apivue config js file devServer proxy api target http localhost 1888 apps test main
  • Ravendb:如何删除给定类型的所有文档

    更具体地说 在 Raven DB 中 我想创建一个具有如下签名的通用方法 public void Clear
  • 如何使用语义和干净的 HTML、CSS 来制作不均匀的文本换行(不是方形或圆形)?

    如何使用语义和干净的 HTML CSS 进行这样的文本换行 与所有浏览器兼容 添加不同的类 p 如果没有其他解决方案 这是我想到的唯一解决方案 但这样每次客户都无法更改类 这是缺点 您可以将图像设置为背景 p p 然后将透明容器以您不希望文
  • SAS 全球日期比较

    我正在尝试进行日期比较 但没有得到正确的结果 有谁知道发生了什么事吗 macro ttt let check start 28APR2014 if check start d lt 25may2014 d then let true 1 e
  • 如何使 multer 正确解析使用表单数据发送的客户端请求?

    我想将数据从客户端传输到双方都使用的服务器计算机Node js 在客户端我正在使用库axios and form data 在我正在使用的服务器上express and multer 我正在使用的客户端代码如下 const FormData
  • MarkerView 走出图表以获取图表上的最后一个点

    我正在使用 MarkerView 类在图表中显示标记视图 我创建的标记视图布局包含两个文本视图 一个在另一个下面 我面临的问题是图表上最后一点的标记视图一半在图表内 一半在图表外 下面两张图清楚地说明了问题 第一张图片显示了图表中心点的标记
  • 通过在 MATLAB 中填充当前值来扩展数组

    我有一个相当简单的问题 我只是想知道在 MATLAB 中是否有一种简单的方法可以做到这一点 即一个函数来完成此任务 而不是自己编写循环或其他东西 假设我有一个时间序列 其中 Time 是1 1 1000和数据是2 1 1 1000 我想通过
  • 如何在不使用依赖注入的情况下模拟另一个包中的函数?

    有点像 golang 初学者 但我以前曾使用过测试框架 如何在不注入依赖项的情况下模拟和伪造依赖方法返回的内容 我不想使用依赖项注入的原因是因为正在使用许多外部包方法 并且在构造函数中注入所有方法很麻烦 我已经在线 stackoverflo
  • phpmyadmin 中令人讨厌的警告[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 每次我登录 phpMyAdmin 时 我都会在红色框中收到一条恼人的警告消息 我已经卸载了 xampp 然后再次安装了几次 我删除
  • Google_maps_flutter 在 iOS 中不显示缩放和路线按钮

    在 IOS 中使用 google map flutter api 时 不会显示缩放和路线按钮 当点击地图上的任何位置时 这些按钮会在 Android 中显示 但是 IOS 中不存在相同的行为 我希望这些按钮在 IOS 中也可用 IOS 中仅
  • 使用MSBuild与VS2017构建SSDT项目失败

    我正在尝试在我们的 Windows Server 2016 服务器上设置 sqlproj SSDT 项目的持续集成 为此 我在服务器上安装了 VS2017 和 SSDT 工具以获得所需的工具 我还安装了 MS build tools 201
  • 嵌套形式和 habtm

    我正在尝试保存到 habtm 关系中的联接表 但遇到问题 在我看来 我传递的组 ID 为 User model user rb class User lt ActiveRecord Base has and belongs to many