1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Progate +α メモず【Ruby on Rails ⑥⑦】

Posted at

はじめに

Ruby on Rails学習レッスン⑥は⑤の応用だったので、特に新しい要素はなし。
細かなミスを繰り返しながら学びました。
⑦はユーザー画像の表示!ひそかに楽しみにしてたところ🥳

メモず

$ rails g migration file_name

マイグレーションファイルのみを作成。

マイグレーションファイルの書き方

class MigrationName < ActiveRecord::Migration[5.0]
	def change
		method_name :table_name, :column_name, :data_type
	end
end

Ruby on Railsのマイグレーションファイル内のchangeメソッドは、データベーススキーマの変更を定義するために使われます。このメソッド内で行うことができる代表的な操作は以下の通りです。

代表的なメソッド

テーブルの作成

def change
  create_table :users do |t|
    t.string :name
    t.string :email
    t.timestamps
  end
end

この例では、usersという新しいテーブルを作成し、nameemailという文字列カラムを追加しています。また、timestampsメソッドはcreated_atupdated_atという2つのタイムスタンプカラムを自動的に追加します。

カラムの追加

def change
  add_column :users, :age, :integer
end

ここでは、usersテーブルにageという整数型のカラムを追加しています。

カラムの削除

def change
  remove_column :users, :age
end

この例では、usersテーブルからageカラムを削除しています。

カラムの名前変更

def change
  rename_column :users, :name, :full_name
end

この操作では、usersテーブルのnameカラムの名前をfull_nameに変更しています。

インデックスの追加

def change
  add_index :users, :email, unique: true
end

ここでは、usersテーブルのemailカラムに一意性を保証するインデックスを追加しています。

form_tagのオプショナルな引数

  1. :method - フォームが使用するHTTPメソッドを指定します(:get:post:put:deleteなど)。
form_tag('/posts', method: :post)
  1. :multipart - フォームがファイルアップロードを含む場合にtrueに設定します。
form_tag('/upload', multipart: true)
  1. :class - フォームタグにCSSクラスを追加します。
form_tag('/search', class: 'search-form')
  1. :id - フォームタグにIDを追加します。
form_tag('/subscribe', id: 'subscribe-form')
  1. :authenticity_token - Railsのクロスサイトリクエストフォージェリ(CSRF)保護>を使うかどうかを指定します。通常はtrueがデフォルトですが、必要に応じてfalseに設定することができます。
form_tag('/posts', authenticity_token: true)

File.write("file_path/file_name.ext", "content")

ファイルの保存を行う。

Fileクラスの代表的なメソッド

RubyにおけるFileクラスは、ファイルシステム上のファイルを操作するために多くのメソッドを提供しています。以下に、Fileクラスの代表的なメソッドをいくつか紹介します。

ファイルの読み書き

  1. open
  • ファイルを開くために使用します。読み込み、書き込み、または両方のモードでファイルを開くことができます。
File.open('example.txt', 'w')
  1. read
  • ファイルの内容を全て読み込みます。
    File.read('example.txt')
    
  1. write
  • ファイルにデータを書き込みます。
    File.write('example.txt', 'Hello, world!')
    
  1. close
  • 開いたファイルを閉じます。
    file = File.open('example.txt', 'w')
    file.close
    

ファイルの情報と操作

  1. exist?
  • 指定されたファイルが存在するかどうかを確認します。
    File.exist?('example.txt')
    
  1. delete
  • ファイルを削除します。
    File.delete('example.txt')
    
  1. size
  • ファイルのサイズをバイト単位で返します。
    File.size('example.txt')
    
  1. rename
  • ファイルの名前を変更します。
    File.rename('example.txt', 'new_example.txt')
    
  1. mtime
  • ファイルの最終変更時刻を返します。
    File.mtime('example.txt')
    

ディレクトリとファイルの区別

  1. directory?
  • 指定されたパスがディレクトリかどうかを確認します。
File.directory?('/path/to/dir')
  1. file?
  • 指定されたパスが通常のファイルかどうかを確認します。
File.file?('example.txt')

これらのメソッドは、ファイルの操作、属性の取得、およびファイルシステムとのインタラクションに広く使用されます。FileクラスはIOクラスを継承しているため、ファイルの読み書きに関連する多くの機能をIOクラスからも受け継いでいます。

画像の更新は、新規に画像が送られた時だけ

あたりまえだけど、忘れがちで大事なこと。

image = params[:image]
if image
  @user.image_name = "#{@user.id}.jpg"
  File.binwrite("public/user_images/#{@user.image_name}", image.read)
end

終わりに

全体的にHTML/CSS ~ ここまでの復習・応用の面が強く、
記事の内容もChatGPTに代表的な使い方を聞いた部分がほとんどですね。

復習の中では細かいミスを繰り返したんですが、細かいとはいえ、やっぱりちゃんとわかってないところなんですよね。ミニ道場みたいな感じで、この⑥⑦で定着したものは大きかったと思います。Progateのカリキュラム、恐るべし・・・・・・

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?