8

has_many 関連付けの複数選択ボックスがあります。パラメータは次のようになります。

foo_ids: ["1", "2", "3"]

強力なパラメーターを使用して、私はこの属性を許可しません。なぜなら、私は自分で承認したいので、人々が好きなものをただ入れることができないからです。

def update
  bar.foos = authorized_foos
  bar.update(baz_params)
  respond_with bar
end

private

  def authorized_foos
    foos = Foo.find(params[:baz][:foo_ids])
    foos.each do |foo|
      authorize foo, :manage?
    end
  end

このアプローチでは、すべての foo を見つけてループし、それぞれを個別に承認する必要があります。できれば Pundit gem を使用して、has_many 承認を管理する簡単な方法はありますか?

4

2 に答える 2

2

これを行う最も簡単な方法はループです。ユーザーの配列から各ユーザーを繰り返し処理し、すべてのユーザーを承認します。例えば、

users_id_array = [1,2,3,4,5,6]

private

  def authorized_users
  users = User.find(params[:group][:user_ids])
  users.each { |u| authorize u, :manage? }
  ...
end

したがって、これは非常に基本的で最も単純な答えです。

于 2015-01-27T17:29:12.580 に答える