2

ActiveRecord にモデルとして登録されていない結合テーブル内の一連のレコードを更新できるかどうか興味があります。

テーブル AsB で結合された 2 つのクラス、たとえば A と B があります。

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

私が必要とするのは、その内容に基づいてその params ハッシュまたは他のカスタム ハッシュを使用して、AB 関係を更新することです。最終的には、この簡単な例を作成する必要があります

A_id | B_id
  1  |  1

:AsBs テーブルに記録し、1-2 および 1-3 レコードがあれば削除します。

もちろん、AsBs モデルを作成して手動で編集することもできますが、@a.Bs または @a.B_ids に対して update / update_all / update_attributes のようなものを使用することを期待しています。

何かアドバイス?

4

1 に答える 1

4

私が正しく理解しているなら、あなたはできるはずです

@b.as = [@a]
@b.save
于 2012-08-22T14:30:18.373 に答える