😊
get_profile_image(width, height)
前提
・active_storageをインストール済み
・gem 'image_processing', '~> 1.2'を適用済み
・app/assets/images内に NoImage.jpgを挿入済み
・userモデルに has_one_attached :profile_image を記入済み
コード
user.rb
def get_profile_image(width, height)
unless profile_image.attached?
file_path = Rails.root.join('app/assets/images/NoImage.jpg')
profile_image.attach(io: File.open(file_path), filename: 'default-image.jpg', content_type: 'image/jpg')
end
profile_image.variant(resize_to_limit: [width, height]).processed
end
end
Discussion
サイズを引数に指定しない場合は、こちらの書き方をします。
このように書いてもOKです。
このメソッドは、group_imageがアタッチされている(存在する)かどうかをチェックします。もしgroup_imageがアタッチされているなら、それを返します。もしgroup_imageがアタッチされていないなら、'no_image.jpg'という文字列を返します。
注意点:このメソッドは、group_imageが存在しない場合に文字列を返します。ビューでこのメソッドの結果を表示する場合、group_imageが存在しない時は文字列を直接表示しようとします。これはgroup_imageが画像のURLやパスである場合には問題ありませんが、それ以外の場合はエラーになる可能性があります。