Rails many_to_many表没有更新

时间:2013-04-04 23:54:15

标签: ruby-on-rails activerecord many-to-many

创建新网站记录时,我无法更新many_to_many表。站点表已更新,但不是sites_users。我希望在创建网站时将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

型号:

user.rb

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

site.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

sites_controller.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视频,并尽可能多地进行了搜索。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分: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通过验证后才能保存。