10

ActiveRecord で次のように接続されたユーザー モデルとロール モデルがあります。

has_many roles, through: :role_accounts

各ロールに 1 つずつ、チェックボックスのリストがある「ユーザーの編集」画面が必要です。Reform gem (v2.1.0) を使用したフォーム オブジェクトのスニペット:

class UserForm < Reform::Form
  property :name
  collection :roles do
    property :id
  end
end

私の問題は、編集フォームが送信され、2 つのロールがチェックされると、params ハッシュが次のよう{"user=>{"name"=>"Joe","roles"=>["2","5",""]}}になり、次のエラーが発生することです。

[Reform] Your :populator did not return a Reform::Form instance for `roles`.

has_many スルーの populator を設定するにはどうすればよいですか?

また、最初にすべてのユーザーの役割を削除してから、選択した役割を追加する必要があると思います。これにより、現在の役割のセットのみになります。改革宝石でこれを行うにはどうすればよいですか?

4

1 に答える 1