2013-04-04 2 views
0

Я не могу получить таблицу many_to_many для обновления при создании новой записи сайта. Таблица сайтов обновляется, но не sites_users. Я ожидаю, что user_id и site_id будут добавлены в таблицу sites_users при создании сайта.Rails many_to_many таблица не обновляется

Моя миграция:

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 join?

Я прочитал как можно больше о многих для многих и много опубликовал темы, просмотрел видео с railscast и искал столько, сколько смогу. Любая помощь будет принята с благодарностью.

Спасибо!

ответ

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 проходит проверки и сохраняется.

+0

Это работает! Большое вам спасибо, я пытался понять это несколько недель! – chaddow

Смежные вопросы