Guest User

Untitled

a guest
Jan 14th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. CanCan load_and_authorize_resource triggers Forbidden Attributes
  2. class UsersController < ApplicationController
  3. respond_to :html, :js
  4.  
  5. def index
  6. @users = User.all
  7. end
  8.  
  9. def show
  10. @user = User.find(params[:id])
  11. end
  12.  
  13. def new
  14. @user = User.new
  15. end
  16.  
  17. def edit
  18. @user = User.find(params[:id])
  19. end
  20.  
  21. def create
  22. @user = User.new(safe_params)
  23.  
  24. if @user.save
  25. redirect_to @user, notice: t('users.controller.create.success')
  26. else
  27. render :new
  28. end
  29. end
  30.  
  31. def update
  32. @user = User.find(params[:id])
  33.  
  34. if @user.update_attributes(safe_params)
  35. redirect_to @user, notice: t('users.controller.update.success')
  36. else
  37. render :edit
  38. end
  39. end
  40.  
  41. def destroy
  42. @user = User.find(params[:id])
  43.  
  44. if current_user != @user
  45. @user.destroy
  46. else
  47. flash[:error] = t('users.controller.destroy.prevent_self_destroy')
  48. end
  49. redirect_to users_url
  50. end
  51.  
  52. private
  53.  
  54. def safe_params
  55. safe_attributes =
  56. [
  57. :first_name,
  58. :last_name,
  59. :email,
  60. :password,
  61. :password_confirmation,
  62. ]
  63. if current_user.is?(:admin)
  64. safe_attributes += [:role_ids]
  65. end
  66. params.require(:user).permit(*safe_attributes)
  67. end
  68. end
  69.  
  70. ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
  71.  
  72. 1) UsersController POST create with invalid params re-renders the 'new' template
  73. Failure/Error: post :create, user: @attr
  74. ActiveModel::ForbiddenAttributes:
  75. ActiveModel::ForbiddenAttributes
  76. # ./spec/controllers/users_controller_spec.rb:128:in `block (4 levels) in <top (required)>'
  77.  
  78. before(:each) do
  79. @attr =
  80. {
  81. first_name: "John",
  82. last_name: "Doe",
  83. email: "user@example.com",
  84. password: "foobar",
  85. password_confirmation: "foobar"
  86. }
  87. end
  88.  
  89. class UsersController < ApplicationController
  90. before_filter :new_user, :only => [:new, :create]
  91.  
  92. load_and_authorize_resource
  93.  
  94. def new_user
  95. @user = User.new(safe_params)
  96. end
  97. end
Add Comment
Please, Sign In to add comment