更新现有记录之间的关联

Updating an association between existing records

我有一个用户 table 和服务 table:

class User < ActiveRecord::Base
  has_many :services, through: :services_users
end

class Service < ActiveRecord::Base
  has_many :users, through: :services_users
end

加入table:

 create_table "services_users", id: false, force: :cascade do |t|
   t.integer "service_id", limit: 4
  t.integer "user_id",    limit: 4
 end

我有一个 select 用户和服务的表单,我想将它们关联起来, 表单 select 是服务,然后是用户

我有以下

user_dispatcher_path(user,service), method: :put

有路线

put "dispatcher" => "userrs#dispatcher", as: :dispatcher

我已经在我的用户控制器中启动了

 def dispatcher
    ?
 end

那我卡住了:

我想我可以使用update_all 或者我可以将两个id 直接保存到services_users

我该怎么做?

如果 ServicesUsers 没有 activerecord 模型,试试这个

@user = User.find(params[:user_id])
@user.services << Service.find(params[:service_id])

如果 user/house 不存在,请使用创建。或者更好的是,使用 find_or_create_by

为您的需求建模的替代方法。

http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association - 这正是您所需要的。组件 = 服务,零件 = 用户。