Ruby on rails 多个属于同一模型,仅更新表单中的最后一个id

Ruby on rails 多个属于同一模型,仅更新表单中的最后一个id,ruby-on-rails,many-to-many,erb,nested-forms,belongs-to,Ruby On Rails,Many To Many,Erb,Nested Forms,Belongs To,所以我有一个用户模型和一个多对多关系的契约模型。合同属于多个用户,但ID不同,所以我可以这样做 Contract.find(params[:id]).creator.email Contract.find(params[:id]).leader.email Contract.find(params[:id]).buyer.email Contract.find(params[:id]).seller.email User.find(params[:id]).contracts 在我的表单中,

所以我有一个用户模型和一个多对多关系的契约模型。合同属于多个用户,但ID不同,所以我可以这样做

Contract.find(params[:id]).creator.email
Contract.find(params[:id]).leader.email
Contract.find(params[:id]).buyer.email
Contract.find(params[:id]).seller.email

User.find(params[:id]).contracts
在我的表单中,我有这个,所以我可以将每个id设置为一个已经创建的用户


禁止保存本合同:





好的,您的模型定义有几个问题

  • 如果您使用的是
    has\u many
    ,则您的关系需要是复数关系,因此它将是
    has\u many:contracts
    。这很可能是导致您出现问题的原因
  • 在同一个表中有多个外键不是最好的主意。相反,有一个
    有多个:合同,外键:“承包商id”
    。然后使用单独的变量定义
    用户的角色。在
    合同中
    您将拥有
    归属于:user,:foreign\u key=>“承包商id”
    。如果要调用
    creator
    leader
    等,则可以指定自定义访问器方法

  • 好的,你的模型定义有几个问题

  • 如果您使用的是
    has\u many
    ,则您的关系需要是复数关系,因此它将是
    has\u many:contracts
    。这很可能是导致您出现问题的原因
  • 在同一个表中有多个外键不是最好的主意。相反,有一个
    有多个:合同,外键:“承包商id”
    。然后使用单独的变量定义
    用户的角色。在
    合同中
    您将拥有
    归属于:user,:foreign\u key=>“承包商id”
    。如果要调用
    creator
    leader
    等,则可以指定自定义访问器方法

  • 你能不能也删除你的模型定义?刚刚编辑了问题让我知道我的建议是否有效,如果不使用复数形式,我很好奇有多少人这样做。你能也删除你的模型定义吗?刚刚编辑了问题让我知道我的建议是否有效,我很好奇,如果不是用复数,很多人都这么做了。合同在我的代码中是复数的,在这里用更简单的术语重写时犯了一个错误。我理解您对role变量和accessor_方法的建议,但我需要在契约和用户之间保持多对多关系。我的合同将始终有4个关联的用户,如果我也没有ID,我不确定我的视图应该如何工作。你能给我更多关于我应该如何实现所有这些的详细片段吗?好的,为了让我为你的案例编写一个完整的解决方案,我需要你添加你的控制器和整个视图以获得更好的图片。再想一想,我确实认为你需要has_和Own_to_many,所以我认为你没有找到区分用户的方法是你让它工作所缺少的一步。我在问题中添加了controller和full form。在我的代码中合同是复数的,在这里用更简单的术语重写时打错了。我理解您对role变量和accessor_方法的建议,但我需要在契约和用户之间保持多对多关系。我的合同将始终有4个关联的用户,如果我也没有ID,我不确定我的视图应该如何工作。你能给我更多关于我应该如何实现所有这些的详细片段吗?好的,为了让我为你的案例编写一个完整的解决方案,我需要你添加你的控制器和整个视图以获得更好的图片。再想一想,我确实认为你需要has_和_属于_许多人,所以我认为你没有找到一种区分用户的方法,这是你让它工作所缺少的一步。我在问题中添加了controller和full form