【问题标题】:Updating an association between existing records更新现有记录之间的关联
【发布时间】:2015-02-26 20:21:38
【问题描述】:

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

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

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails has-many-through model-associations


    【解决方案1】:

    如果 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 - 这正是您所需要的。组件 = 服务,零件 = 用户。

    【讨论】:

    • 几乎 - 我创建了 ServicesUsers 模型 - 但创建时没有方法错误!所以我把它做成了一个活动记录模型并添加了一个控制器,现在它正在寻找一个模板 -
    • 在我看来,Rails 应该负责连接表,我不需要直接访问它
    • 我已经编辑了没有 ServicesUser 模型的工作答案。让我知道这是否有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多