gurelog

エンジニアになるため、日々学んだことをまとめています

【rails】attach_fileメソッドとは?

こんにちは。gureです。

今回はテストコードを書いていて、すっかり忘れていたメソッドを思い出したので、備忘録がてらブログを書きます。

テストコードを書く際にはRSpecを使用しています。

 

attach_fileメソッド

テストコード内で画像を添付したい時に使えるメソッドです。

 

コード

 # 画像選択フォームに画像を添付する
 attach_file('menu[image]', image_path)

今回はこのようにテストコード内に記述しました。

 

第一引数の'menu[image]' というのは、画像を添付するinput要素のname属性です。

 

ブラウザの検証ツールで下記の画像のようなファイルを添付するインプット要素をクリックした時、

検証

 

左下に出てくる、

 

拡大

 

HTMLのname属性を引っ張ってきます。

 

 

続いて、第二引数のimage_pathとは、添付する画像のパスを示しています。

実はこのコードの前に変数として、

 

 # 添付する画像を定義する
 image_path = Rails.root.join('public/images/test_image.png')

 # 画像選択フォームに画像を添付する
 attach_file('menu[image]', image_path)

 

image_pathを定義しています。

さらにテストコード用の画像をpublic/imagesに、test_image.pngとして予め保存しておきます。デフォルトではpublicフォルダにimagesなんてフォルダはないので、これも作っておきます。何事もわかりやすく。

Rails.root.join では、絶対パスの情報を取得しています。

 

これらにより、テストコード内で画像を添付することができました。

 

テストコード内で画像を添付する、という表現が正しいのかはなんだか微妙ですが、、🤔