我很好奇是否有可能更新一个连接表中的一堆记录,这些记录没有作为模型注册到activerecord中。
我有两个类,比如a和b,由表asb连接。

class A < ActiveRecord::Base
  attr_accessible :A_name, :B_ids
  has_and_belongs_to_many :Bs, join_table: :AsBs
end

class B < ActiveRecord::Base
  attr_accessible :B_name, :A_ids
  has_and_belongs_to_many :As, join_table: :AsBs
end

class CreateAsBs < ActiveRecord::Migration
  def up
    create_table :AsBs, id: :false do |t|
      t.integer :A_id
      t.integer :B_id
    end
   end
end

我还有一个带有b记录复选框的表单,它返回如下所示的params散列
params[:my_form]
>> { "B_name_1" => "1", "B_name_2" => "0", "B_name_3" => "0"}

#What means the user has chosen only first checkbox

我需要的是更新a-b关系,使用params散列或基于其内容的其他自定义散列。
最后我需要这个简单的例子来创建
A_id | B_id
  1  |  1

在my:asbs表中记录并删除1-2和1-3记录(如果有)。
显然我可以创建一个asbs模型并手动编辑它,但是我希望使用
类似于update/update_all/update_attributes [email protected] [email protected]_ids
有什么建议吗?

最佳答案

如果我理解正确的话你应该可以

@b.as = [@a]
@b.save

08-17 18:53