改訂新版 基礎Ruby on Rails 追加HINT集
2012/03/07
SQLite3とMySQL、PostgreSQL
SQLite3とMySQL、PostgreSQLについて、本書の記述はいまいち意図がつかみにくいようですので、改めて説明します。
SQLite3は、おもにデスクトップアプリケーション用に使われているDMBSです。サーバー上でRailsを使ったウェブアプリケーションを公開するときは、ふつうSQLite3は使いません。パソコン上でRailsを学習するときには、準備が楽ですし、機能も十分なので、SQLite3がおすすめです(昔ながらの簡単な掲示板くらいなら、SQLite3をサーバー上で使ってもいいかもしれません)。
MySQLやPostgreSQLは、サーバー上で使われる本格的なDBMSです。学習用や自分の趣味のためではなく、一般向けに公開するアプリケーションを作るときに使います。本番環境でMySQLやPostgreSQLを使うときは、パソコン上の開発環境もMySQLやPostgreSQLに合わせます。MySQLやPostgreSQL独自の機能を利用することが多いからです。
WindowsにMySQLをインストールする手順は、本書の付録Bにあります。WindowsにPostgreSQLをインストールする方法、およびMacにMySQLやPostgreSQLをインストールする手順は、ただいま準備中です。
Ruby 1.9.2での文字化け
Windowsのコマンドプロンプトで、UTF-8の文字が文字化けせずに表示されるようになったのは、Ruby 1.9.3からです。Ruby 1.9.2を使っている方は、Chapter2のサンプルを実行すると漢字やひらがなが文字化けします。本書を読み進めるうえでは、Ruby 1.9.3を使うようにしてください。
テーブル名と主キー名の設定
既存のデータベースをあとからRailsで利用するときには、テーブルや主キーの名前がRailsの規約に沿っていないことがあります。そうしたときは、モデルクラスでテーブル名や主キーの名前を指定できます。
テーブル名を指定するには、self.table_name = テーブル名
とします。たとえば、会員用のテーブル名が単数型のmemberであるときは、次のようにします。
class Member < ActiveRecord::Base self.table_name = "member"
主キー名を指定するには、self.primary_key = 主キーのカラム名
とします。主キーのカラム名がno
であるときは、次のようにします。
class Member < ActiveRecord::Base self.primary_key = "no"
なお、Railsの古いバージョンでは、テーブル名や主キー名を設定するのにset_table_name
メソッドやset_primary_key
メソッドを使っていましたが、そうしたメソッドはRails 3.2からは廃止予定となりました。
LoadError
学習中にLoadError in TopController#about
のようなエラーメッセージに遭遇することがあるかもしれません。おそらく、その下には次のような説明も表示されているでしょう。
Expected C:/Users/taro/rails/asagao/app/controllers/top_controller.rb to define TopController
これはtop_controller.rb
がTopController
というクラスを定義していない、ということを意味しています。本来、このファイルは次のような構成になっていなければなりません。
class TopController < ApplicationController def about ... end ... end
class ... end
の間でabout
メソッド(アクション)を定義しているかどうか、TopController
の綴りが合っているかどうか確認し、必要に応じて修正してください。