MemoMemo

Rails

最終更新:

kiminori_hirose

- view
管理者のみ編集可

Rails 1.2.3 のメモ

作成手順

プロジェクトの作成

projectプロジェクトを作成する。
$ rails project

データベースの設定

config/database.ymlをMySQL用に編集する。(testとproductionもdevelopmentと同様に変更しておく。)
development:
  adapter: mysql
  database: project_development
  username: {MySQLのユーザ名}
  password: {パスワード}
  socket: /var/lib/mysql/mysql.sock  #ソケットのとき
  host: localhost  #TCP/IPのときのMySQLのホスト名
  port: 3306  #TCP/IPのときのMySQLのポート番号。指定してないときは、3306になる
  encoding: utf8  #文字化け防止のためデータベースの文字コードを設定する。

文字コード(UTF-8)の指定

app/controllers/application.brにHTTPレスポンスで返すContent-Typeを追加する。
class ApplicationController < ActionController::Base
  after_filter :set_charset
protected
  def set_charset
    headers["Content-Type"] = 'text/html; charset=UTF-8'
  end
end
config/environment.rbにRailsの内部文字コードを追加する。
$KCODE = 'UTF8'

Tips

Railsの規約にあわない名前を持つテーブルのためにset_table_name を使う

config/environment.rbファイルを編集
ActiveRecord::Base.pluralize_table_names = false
app/controllers/entity.rbを編集
class Entity < ActiveRecord::Base
  set_table_name "entity"
end

主キーがidではないテーブルのためにset_primary_keyを使う

app/controllers/entity.rbを編集
class Entity < ActiveRecord::Base
  set_primary_key "entity_id"
end

ActiveRecordで外部キーを指定する

class Person < ActiveRecord::Base
  belongs_to :company
  validates_associated :campany
end

独自の単数形と複数形を定義する

config/environment.rbを編集
Inflector.inflections do |inflect|
  inflect.irregular 'leaf', 'leaves'
end

セッションの有効期限を設定する

プロジェクト全体で設定するには、config/environment.rbを編集
ActionController::Base.session_options[:session_expires] = 15.minutes.from_now
特定のコントローラで設定するには、各コントローラを編集
class PersonController < Application
  session :session_expires => 10.minutes.from_now
end

HTMLエスケープとURIエンコード

HTMLエスケープ
<a href="<%=h 'http://localhost/q=東京' -%>">LINK</a>
URIエンコード
<a href="<%=u 'http://localhost/q=東京' -%>">LINK</a>
目安箱バナー