0

アプリケーションでdeviseとdevise_invitableを使用しています。ユーザーに招待状を送信するときに、役割も割り当てたいと考えています。移行によってユーザー テーブルに role_id を追加し、許可されたロールを含む Role モデルを作成しました。devise と devise_invitable のドキュメントにあるいくつかのアドバイスを使用して、アプリケーション コントローラーにいくつかのコードを追加しました。

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  before_filter :configure_permitted_parameters, if: :devise_controller?

protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :role_id
    devise_parameter_sanitizer.for(:accept_invitation) << :role_id
    devise_parameter_sanitizer.for(:sign_in) << :role_id
    devise_parameter_sanitizer.for(:account_update) << :role_id
  end
end

ビューでは、私はこれを持っています:

<%= simple_form_for(User.new, url: user_invitation_path,
                              html: { class: 'form-inline' }) do |f| %>
  <%= f.input :email, placeholder: 'Email', label: false %>
  <%= f.collection_select :role_id, Role.all, :id, :name, {} %>
  <%= f.button :submit, 'Invite User', class: 'btn-primary' %>
<% end %>

アドレスを入力して役割を選択して新しいユーザーを作成するたびに、role_id はまだ nil のままです (設定されません)。

configure_permitted_pa​​rameters の最初と最後にログを追加すると、そのメソッド内で何も失敗しません。ただし、終了した直後に、サーバー出力に次のように表示されます。 Unpermitted parameter: role_id.

何が足りないの!?

4

2 に答える 2