0

创建新站点记录时,我无法更新 many_to_many 表。站点表已更新,但未更新站点用户。我希望在创建站点时将 user_id 和 site_id 添加到 sites_users 表中。

我的迁移:

class CreateTableSiteUser < ActiveRecord::Migration
def up
  create_table :sites_users, :id => false do |t|
      t.integer :site_id
      t.integer :user_id
  end

楷模:

用户.rb

class User < ActiveRecord::Base
attr_accessible  :name, :email, :password, :password_confirmation, :user_id
has_secure_password
has_and_belongs_to_many :sites

网站.rb

class Site < ActiveRecord::Base
attr_accessible :name, :site_key, :organization_id, :user_id, :site_id
belongs_to :organization
has_and_belongs_to_many :users

站点控制器.rb

def create
  @site = Site.new(params[:site])
    @site.organization_id = Organization.where(:user_id => current_user.id)
    @user_id = current_user.id
    if @site.save
        flash[:success] = "New Site Created!"
        redirect_to root_path
    else

我还需要什么来获取 site_id 和 user_id 以保存到 sites_users 连接表?

我已经尽可能多地阅读了多对多的内容,并且发布了许多主题,观看了 railscast 视频,并尽可能多地进行了搜索。任何帮助将不胜感激。

谢谢!

4

1 回答 1

1

如果您要在操作上创建新站点create,并希望将该站点分配给current_user,请尝试以下操作

if @site.save
  @site.users << current_user
  flash[:success] = "New Site Created!"
  redirect_to root_path
else
  ...

这会添加current_user到用户列表中,@site但仅在@site通过验证并保存之后。

于 2013-04-05T00:10:31.710 回答