えーと、これはそういうものだと考えてください。
いくら考えても無駄です。
マイグレーションの仕様なので、ここに疑問を持ったところで何も変わらないのが現実です。
ただ、根本から理解したいという姿勢は素晴らしいと思うので、ぜひSQL単体で勉強してください。
SQL入門みたいな本を一冊買って、PostgreSQLを使って勉強することをおすすめします。
MySQLやSQLiteはきちんとSQLを勉強するには向いていません。
実用のために、実装されていないSQL構文があるためです。
マイグレーションの話に戻りますが、
まず、データベースを扱う以上、最終的にSQLを使う事になります。
テーブルを作るには、SQLのCREATE文を使う必要があります(絶対のルールです)。
Railsのマイグレーションでは、CREATE文をrubyで表現しているだけです。
例えば、このRubyの表現は、
ruby
1create_table :users do |t|
2 t.string :name
3 t.string :email
4 t.timestamps
5end
最終的にこのようなSQLになります(細部は異なりますが、代替同じです)。
sql
1/* PostgreSQL */
2CREATE TABLE users(
3 id SERIAL PRIMARY KEY,
4 name VARCHAR,
5 email VARCHAR,
6 created_at TIMESTAMP,
7 updated_at TIMESTAMP
8)
という事で、create_table :users
という文面から、CREATE TABLE users (...)
というSQLを作る事が分かるように、かなりSQLに近い表現になっています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。