はじめに
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
という新しいテーブルを作成し、name
とemail
という文字列カラムを追加しています。また、timestamps
メソッドはcreated_at
とupdated_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
のオプショナルな引数
:method
- フォームが使用するHTTPメソッドを指定します(:get
、:post
、:put
、:delete
など)。form_tag('/posts', method: :post)
:multipart
- フォームがファイルアップロードを含む場合にtrue
に設定します。form_tag('/upload', multipart: true)
:class
- フォームタグにCSSクラスを追加します。form_tag('/search', class: 'search-form')
:id
- フォームタグにIDを追加します。form_tag('/subscribe', id: 'subscribe-form')
:authenticity_token
- Railsのクロスサイトリクエストフォージェリ(CSRF)保護>を使うかどうかを指定します。通常はtrue
がデフォルトですが、必要に応じてfalse
に設定することができます。form_tag('/posts', authenticity_token: true)
File.write("file_path/file_name.ext", "content")
ファイルの保存を行う。
File
クラスの代表的なメソッド
RubyにおけるFile
クラスは、ファイルシステム上のファイルを操作するために多くのメソッドを提供しています。以下に、File
クラスの代表的なメソッドをいくつか紹介します。
ファイルの読み書き
open
- ファイルを開くために使用します。読み込み、書き込み、または両方のモードでファイルを開くことができます。
File.open('example.txt', 'w')
read
- ファイルの内容を全て読み込みます。
File.read('example.txt')
write
- ファイルにデータを書き込みます。
File.write('example.txt', 'Hello, world!')
close
- 開いたファイルを閉じます。
file = File.open('example.txt', 'w') file.close
ファイルの情報と操作
exist?
- 指定されたファイルが存在するかどうかを確認します。
File.exist?('example.txt')
delete
- ファイルを削除します。
File.delete('example.txt')
size
- ファイルのサイズをバイト単位で返します。
File.size('example.txt')
rename
- ファイルの名前を変更します。
File.rename('example.txt', 'new_example.txt')
mtime
- ファイルの最終変更時刻を返します。
File.mtime('example.txt')
ディレクトリとファイルの区別
directory?
- 指定されたパスがディレクトリかどうかを確認します。
File.directory?('/path/to/dir')
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のカリキュラム、恐るべし・・・・・・