Ruby on rails Rails表单与属于关联

Ruby on rails Rails表单与属于关联,ruby-on-rails,forms,belongs-to,Ruby On Rails,Forms,Belongs To,我是Rails的新手,所以这可能是一个明显的问题,如果是这样,我道歉 我正在尝试创建一个表单,用于创建一个用户记录,该记录与团队模型有一个属于关联。到目前为止,我所做的是 <% form_for @user, url: {action: "create"} do |f| %> <%= f.text_field :name %> <%= f.text_field :email %> <% f.fields_for :team do |team

我是Rails的新手,所以这可能是一个明显的问题,如果是这样,我道歉

我正在尝试创建一个表单,用于创建一个
用户
记录,该记录与
团队
模型有一个
属于
关联。到目前为止,我所做的是

<% form_for @user, url: {action: "create"} do |f| %>
  <%= f.text_field :name %>
  <%= f.text_field :email %>

  <% f.fields_for :team do |team| %>
    <%= team.collection_select(:team_id, Team.all, :id, :name) %>
  <% end %>
  <%= f.submit %>
<% end %>
参数现在包含一个
team_id
字段,该字段不是
User
模型的属性,因此创建失败。我不知道如何着手解决这个问题,更不用说这是否是解决这个问题的适当方式了。任何建议都将不胜感激

欢迎来到Rails:)

如果目标是确保每个用户都可以成为团队的一部分,那么以这种方式进行关联的逻辑是没有问题的

因此,首先需要确保用户模型上存在
team\u id
。同样,正如杜恩所建议的,你不需要为设置
字段,除非你想与团队模型交互并在同一表单中进行更改

因此,首先创建一个迁移
rails g迁移将团队添加到用户团队:属于

在迁移中使用“所属对象”将添加一个引用,您可以在此处了解该引用:

然后迁移数据库
bundle exec rake db:migrate

然后重新启动服务器。然后更改您的表单,如下所示:

<% form_for @user, url: {action: "create"} do |f| %>
  <%= f.text_field :name %>
  <%= f.text_field :email %>
  <%= f.collection_select(:team_id, Team.all, :id, :name) %>

  <%= f.submit %>
<% end %>

使用gem很容易做到这一点

关联

为了处理关联,简单表单可以生成选择输入、一系列收音机按钮或复选框。让我们看看它是如何工作的:假设您有一个属于某个公司的用户模型,并且有多个角色。结构将类似于:

class用户
现在我们有了用户表单:



如果用户属于某个团队,它应该有一个团队id,因为“所属团队”在外键旁边?此外,除非您使用嵌套属性执行某些操作,否则您不需要字段。对不起,我不完全了解“属于”关联实际上是如何工作的,您是对的。谢谢
<% form_for @user, url: {action: "create"} do |f| %>
  <%= f.text_field :name %>
  <%= f.text_field :email %>
  <%= f.collection_select(:team_id, Team.all, :id, :name) %>

  <%= f.submit %>
<% end %>