DeviseのuserにActiveStorageでアイコンを追加した話
今回はDevise
でuser
を追加した際のuser
にActiveStorage
を用いてアイコン画像をアップロードした話についてまとめます。
model/user.rb
にて以下を追加
class User < ApplicationRecord has_one_attached :image ~省略~ end
controllers/application_controller.rb
にて以下を追加
before_action :configure_permitted_parameters, if: :devise_controller? ~省略~ protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:image]) devise_parameter_sanitizer.permit(:sign_in, keys: [:image]) devise_parameter_sanitizer.permit(:account_update, keys: [:image]) end
views/users/registrations/new.html.erb
及びedit.html.erb
に以下の行を追加
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= render "devise/shared/error_messages", resource: resource %> <div class="field"> <%= f.label :image %> <%= f.file_field :image %> </div> ~省略~
アイコンのviewsを該当のviewに作ってあげる
<% if @user.image.attached? %> <%= image_tag(@user.image, :size => "80x80") %> <%end%>
最後に
今回application_controller
のところにbefore_action ~~
を追加してuserテーブルにimageカラムを追加を有効化するのを忘れていて結構詰んだので今後は気をつけていきたい。