我有一个用户表和服务表:
class User < ActiveRecord::Base
has_many :services, through: :services_users
end
class Service < ActiveRecord::Base
has_many :users, through: :services_users
end
使用连接表:
create_table "services_users", id: false, force: :cascade do |t|
t.integer "service_id", limit: 4
t.integer "user_id", limit: 4
end
我有一个表单来选择用户和服务,我想关联它们, 表单选择服务然后选择用户
我有以下
user_dispatcher_path(user,service), method: :put
带路线
put "dispatcher" => "userrs#dispatcher", as: :dispatcher
在我的用户控制器中,我已经开始
def dispatcher
?
end
然后我被卡住了:
我想我可以使用update_all,也许我可以将两个id直接保存到services_users
我该怎么做?
答案 0 :(得分:0)
如果ServicesUsers没有activerecord模型,请尝试使用
@user = User.find(params[:user_id])
@user.services << Service.find(params[:service_id])
如果用户/房屋尚未存在,请使用create。或者更好的是,使用find_or_create_by
模拟您的需求的替代方式。
http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association - 这正是您所需要的。 assemblies = services,parts = users。