Rails初学者のアウトプット兼備忘録です。
間違いや補足等あればご指摘いただけると幸いです。
今回はFileクラスのwriteメソッドとbinwriteメソッドについてまとめます。
そもそもFileクラスとは?
Rubyでファイルを扱うには、Fileクラスを使う必要があります。
Fileクラスに対してメソッドを指定することで、ファイルの作成や書き込み等行うことができます。
Fileクラスにも様々なメソッドがありますが、今回はwriteメソッドとbinwriteメソッドに限定して違いなどをまとめます。
writeメソッドとbinwriteメソッドの違い
まず、writeメソッド、binwriteメソッド共にファイルにデータを書き込むメソッドです。
違いとしては、文字列を書き込むか、バイナリーデータ(画像や音声などの非テキストデータ)を書き込むかというところです。
writeメソッド-ファイルに文字列を書き込むのに適している
binwriteメソッド-ファイルにバイナリーデータを書き込むのに適している
使い方
File.write("ファイルの場所", "ファイルの中身")
File.binwrite("ファイルの場所", "ファイルの中身")
上記のように使うことで、ファイルに書き込むことができます。
次にRailsにおいて、ユーザー画像を編集するというような具体例を示します。
def update
@user = User.find(params[:id])
@user.name = params[:name]
@user.email = params[:email]
if params[:image]
@user.image_name = "#{@user.id}.jpg"
image = params[:image]
File.binwrite("public/user_images/#{@user.image_name}", image.read)
end
ifで画像が送信されているか判定し、変数imageに対しreadメソッドを用いることで画像データを取得しています。
以上、Fileクラスのwriteメソッド、binwriteメソッドの違いや使い方についてまとめました。
間違いや「もっと効率的なやり方があるよ!」などのアドバイスがあれば、是非ご指摘ください!