0
0

【Rails】【Ruby】Fileクラスのwriteメソッドとbinwriteメソッドについて

Posted at

Rails初学者のアウトプット兼備忘録です。
間違いや補足等あればご指摘いただけると幸いです。

今回はFileクラスのwriteメソッドとbinwriteメソッドについてまとめます。

そもそもFileクラスとは?

Rubyでファイルを扱うには、Fileクラスを使う必要があります。
Fileクラスに対してメソッドを指定することで、ファイルの作成や書き込み等行うことができます。
Fileクラスにも様々なメソッドがありますが、今回はwriteメソッドとbinwriteメソッドに限定して違いなどをまとめます。

writeメソッドとbinwriteメソッドの違い

まず、writeメソッド、binwriteメソッド共にファイルにデータを書き込むメソッドです。
違いとしては、文字列を書き込むか、バイナリーデータ(画像や音声などの非テキストデータ)を書き込むかというところです。

writeメソッド-ファイルに文字列を書き込むのに適している
binwriteメソッド-ファイルにバイナリーデータを書き込むのに適している

使い方

controller.rb
 File.write("ファイルの場所", "ファイルの中身")
  File.binwrite("ファイルの場所", "ファイルの中身")

上記のように使うことで、ファイルに書き込むことができます。
次にRailsにおいて、ユーザー画像を編集するというような具体例を示します。

users_controller.rb
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メソッドの違いや使い方についてまとめました。
間違いや「もっと効率的なやり方があるよ!」などのアドバイスがあれば、是非ご指摘ください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0