0

Devise と CanCan をインストールしましたが、どちらも動作しているようです。移行に「ロール」列がありますが、ユーザーを追加した後にログを確認すると、BD クエリにロールが追加された形跡がありません

完全なものは次のようになります。

Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"S+SjhxsALMbHkRBPPwOMIvHo1Bd0cNYl1g=", "user"=>{"email"=>"david@mail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "role"=>"receptionist"}, "commit"=>"Sign up"}
Unpermitted parameters: role
   (0.2ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = 'david@mail.com' LIMIT 1
Binary data inserted for `string` type on column `encrypted_password`
  SQL (3.1ms)  INSERT INTO "users" ("created_at", "email", "encrypted_password", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Thu, 24 Oct 2013 08:52:31 UTC +00:00], ["email", "david@mail.com"], ["encrypted_password", "$2a$10$e3hKTibsZ7qSgOC5OelKgjumU8ufu46xNrBkmXcDEpix/m"], ["updated_at", Thu, 24 Oct 2013 08:52:31 UTC +00:00]]
   (0.7ms)  commit transaction
   (0.1ms)  begin transaction
Binary data inserted for `string` type on column `last_sign_in_ip`
Binary data inserted for `string` type on column `current_sign_in_ip`
  SQL (0.7ms)  UPDATE "users" SET "last_sign_in_at" = ?, "current_sign_in_at" = ?, "last_sign_in_ip" = ?, "current_sign_in_ip" = ?, "sign_in_count" = ?, "updated_at" = ? WHERE "users"."id" = 2  [["last_sign_in_at", Thu, 24 Oct 2013 08:52:31 UTC +00:00], ["current_sign_in_at", Thu, 24 Oct 2013 08:52:31 UTC +00:00], ["last_sign_in_ip", "127.0.0.1"], ["current_sign_in_ip", "127.0.0.1"], ["sign_in_count", 1], ["updated_at", Thu, 24 Oct 2013 08:52:31 UTC +00:00]]
   (0.6ms)  commit transaction
Redirected to http://0.0.0.0:3000/
Completed 302 Found in 108ms (ActiveRecord: 5.6ms)

さらに、ユーザーを編集してロールを追加すると、ログに次のエラーが表示されます

許可されていないパラメーター: 役割

移行が機能していないように感じます..しかし、ロール変数にアクセスできる..なので、完全には理解できません。

私はレールにかなり慣れていないので、明らかなことを省略していることを期待しています(そして望んでいます)。

前もって感謝します

4

2 に答える 2

0

あなたのアプリケーションコントローラーで

      before_action :configure_permitted_parameters, if: :devise_controller?
 protected
 def configure_permitted_parameters
   devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:password, :password_confirmation,:current_password,:email,:name,:role) }
   devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:password, :password_confirmation,:email,:name,:role) }
 end

それは私のために働いた!

于 2017-02-08T20:49:35.203 に答える