创建新网站记录时,我无法更新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视频,并尽可能多地进行了搜索。任何帮助将不胜感激。
谢谢!
答案 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
通过验证后才能保存。