Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。基礎RubyOnRails、今回はデータベース回です。データベースについての詳細はSQL基礎から始めるデータベースでやっているので、Railsのデータベースとモデルの関連部分について勉強していきます。見るはじめにモデルとは?モデルの作成モデルクラスのインスタンスDBMSの操作DBの作成DBの削除DBクライアントを使うマイグレーションとは?マイグレーションのバージョンマイグレーションスクリプトの作成マイグレーションスクリプトの編集マイグレーションスクリプトの実行マイグレーションスクリプトの修正はじめに◯◯はモデル名、コントローラ名と思ってください。モデルとは?MVCモデルのM,データを表現するものです。RailsではActiveRecord::Baseを継承したクラス、そしてそれに対応するDBMSのテーブルを1まとめにしてモデルと呼ばれます。イメージをみて分かる通り、モデルクラスとテーブルは基本的に1体1の関係となっています。generateを使うことで楽に作成できます。ここで、モデル名はRailsの制約通り単数形にするように注意してください。app/models/◯◯.rbこうすることで、モデルクラスだけではなく対応するテーブルを作成するマイグレーションスクリプトの雛形もRailsが作ってくれます。DBが未作成だとすぐにマイグレーションはできません。モデルクラスのインスタンスモデルクラスのインスタンスは、テーブルの1つのレコードを表現するものになります。Userというモデルクラスがあれば、ユーザー1人分の名前、メールアドレス等を持つものがモデルクラスののインスタンスです。従って、複数のレコードを持つものはモデルクラスではなく、複数のモデルのインスタンスを持つ配列というイメージです。(実際には、配列というよりはSQL文そのものという感じ。newで新しいアプリケーションを作成した時に自動的にDBが作成されます。PostgreSQL等、他のDBMSを使う場合はコマンドを打って作成する必要があります。db:createちなみに、デフォルトの状態だとdevelopment環境のdbが作成され、production環境のdbは作成されません。そのため、開発環境で問題なくとも本番環境で動かした時にアレ!?っとなります。自分の場合開発環境のdbをcreateするときは一緒に本番環境のdbも作ってしまいます。本番環境のdbの作成方法は以下のとおり。RAILS_ENV=productionRAILS_ENVとはRailsの環境変数で、この環境変数の値によってRailsが本番環境、テスト環境、開発環境を使い分けます。db系の操作だけではなく、サーバー起動時にもこの環境変数が関係します。以下のコマンドを使います。db:migrate:resetを使うことがほとんどです。'DBクライアントを使うSQLite,MySQL等各DBMSのCUIクライアントを使う場合、それぞれのクライアント起動コマンドを使っても良いのですが、Railsのアプリケーションディレクトリにいる場合は以下のコマンドからクライアントを起動できます。dbちょこっとデータ確認などには便利です。実際のDBMSを操作するのではなく、スクリプトファイルを作成してそれを実行することでDBMSを変更するという形式になっています。ソースコードのバージョン管理システムに近いバージョン管理機能を持つため、いつでも任意のバージョンに戻したり、多くの変更を一度に反映させることができます。気にしなくていいので、SQLを覚えなくてもいい。(でも標準操作やCRUDくらいは確認しておこうね)マイグレーションのバージョンマイグレーションスクリプトファイルは、作成時にファイル名に自動的にタイムスタンプが付与される。2016年1月1日にマイグレーションスクリプトを作成した場合、20160101xxxxxx(xxxxの部分は重複しないユニークな値)となる。このタイムスタンプが、バージョン名となります。◯◯で作成した場合は、自動的にマイグレーションスクリプトが作成されます。それ以外、例えばテーブルの列名の変更などを行うときは、以下のコマンドでマイグレーションスクリプトが作成できます。db/migrate/20xxxxxxxxxxx_◯◯.rb実行結果を見ても分かる通り、20xxxxxx_◯◯.rbというマイグレーションスクリプトがdb/migrateディレクトリに作成されます。あとは編集して実行するだけ。作成したばかりのマイグレーションスクリプトは、以下の用になっています。これはモデルクラスを新規作成した時に生成されるマイグレーションスクリプトです。endendこのスクリプトにテーブルのカラム名と制限やデフォルト値等を設定し、テーブルを作成することになります。end上記の例の場合、name,mail_address,age,genderというカラム、そして自動的に作られるidカラム、t.timestampsによってcreated_at,updated_atという2つのカラムが作成されます。NULL制約がかかり、defaultオプションが有るgenderカラムは初期値が0に設定されます。以下のコマンドを実行することで、未実行のマイグレーションスクリプトが全て実行され、DBMSにマイグレーションスクリプトの操作の結果が反映されます。これも、RAILS_ENVの影響を受けるため、production環境に変更を反映させる場合、引数にRAILS_ENV=productionを追加してください。前回の記事を参考にしてください。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。