ユーザーモデル
Railsでは、データモデルとして扱うデフォルトのデータ構造のことをモデルと呼ぶ。RailsではActiveRecordというライブラリを用いてデータベースとやりとりを行い、データモデルのオブジェクトの保存、更新、削除などを行う。また、Railsではデータの定義をRubyで記述でき、SQLを意識する必要がない。データをモデリングする際は、デフォルトでリレーショナルデータベースが使用され、リレーショナルデータベースは、データ行で構成されるテーブルからなり、各行はデータ属性のカラム (列) を持つ。例えばnameとemailを持つユーザーを保存するのであれば、nameとemailのカラムを持つusersテーブルを作成する。
ユーザーモデルはこのようになる。
このユーザーモデルを作成するために、ターミナルで以下のコマンドを打つ
rails generate model User name:string email:string
ここでは、モデル名と、データの属性名(name,email)とそのデータ型を指定している。このgenerateコマンドにより、マイグレーションファイルというデータベースの構造に変更を加えるファイルが生成される。
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
このマイグレーションファイルのchangeメソッドにより、Railsのcreate_tableメソッドが呼び出され、ユーザーを保存するためのテーブルがデータベースに保存される。そのcreate_tableメソッド内でブロック変数t(tableのt)を生成し、users tableにstring型のname属性とemail属性のカラムを追加している。また、t.timestampsではcreated_atとupdated_atという2つの「マジックカラム (Magic Columns)」が生成される。これらは、あるユーザーが作成または更新されたときに、その時刻を自動的に記録するタイムスタンプである。なお、Railsの慣習でモデル名(User)は単数形であるが、テーブル名(users)は複数形となっている。
マイグレーションを完了させるにはターミナルで
rails db:migrate
と打つ必要がある。これで以下のようなユーザーモデルが作成された。
ターミナルで
user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
と入力すると、Userモデルのnewメソッドでnameとemailを指定した新しいユーザーオブジェクトが生成される。