gpt4 book ai didi

ruby-on-rails - Rails 多对多创建 Controller

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:28 25 4
gpt4 key购买 nike

在此提前感谢您提供的任何帮助。我实际上是 Rails 开发和 stackoverflow 的新手。我正在创建多对多关系并且在一些基础知识上遇到麻烦。我想做一个用户和组的关系。

模型:

    class User < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :groups
end

class Group < ActiveRecord::Base
attr_accessible :name
has_and_belongs_to_many :users
end

db/migrate create_groups_users_join

class CreateGroupsUsersJoin < ActiveRecord::Migration
def self.up
create_table 'groups_users', :id => false do |t|
t.column 'group_id', :integer
t.column 'user_id', :integer
end
end
def self.down
drop_table 'groups_users'
end
end

我使用这段代码在我的用户表单上创建了一个下拉菜单。

true }) %>

Controller

def edit
@user = User.find(params[:id])
@groups = Group.all
...
end
def new
@user = User.new
@groups = Group.all
...
end

我现在不知道应该向 Controller 添加什么来更新创建/编辑/更新时的连接表。任何人都可以解释我需要改变什么才能实现这一目标吗?谢谢你。

这是我现在得到的错误输出:

 {"utf8"=>"✓",
"authenticity_token"=>"pgyajCT23qQVMuS+MQgG6E7M7Q8AWjfGaYbe3q7QDSA=",
"group"=>{"group_id"=>"1"},
"user"=>{"name"=>"ymudfg"},
"commit"=>"Create User"}

最佳答案

您可以通过在 Controller 中执行此操作将用户添加到组:

   user = User.find(params[:uid])
group = Group.find(params[:gid])

group.users << user #Adding user to group

为用户分配组:

   user.groups << group

编辑:根据您的评论

  class UsersController < ApplicationController
def new
@user = User.new
@group = Group.all
end

def create
@user = User.new(params[:user])
@group = Group.find(params[:group][:group_id]) # As per log
if @user.save
@group.users << @user
else
render :new
end
end

#Similarly you can implement edit
end

关于ruby-on-rails - Rails 多对多创建 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com