我很好奇是否可以更新未在 ActiveRecord 中注册为模型的连接表中的一堆记录。
我有 2 个班级,比如说 A 和 B,由表 AsBs 加入。
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[:my_form]
>> { "B_name_1" => "1", "B_name_2" => "0", "B_name_3" => "0"}
#What means the user has chosen only first checkbox
我需要的是更新 AB 关系,使用该参数散列或其他基于其内容的自定义散列。最终我需要这个简单的例子来创建一个
A_id | B_id
1 | 1
在我的 :AsBs 表中记录并删除 1-2 和 1-3 记录(如果有)。
我显然可以创建一个 AsBs 模型并手动编辑它,但我希望对 @a.Bs 或 @a.B_ids 使用 update / update_all / update_attributes 之类的东西
有什么建议吗?