モデルの関連付けしたプロジェクトを作った時のメモ

チュートリアル通りにやるとうまくいくのだけど、
自分で作ると関連付けされなくてだいぶ詰まりまくったのでその時のメモ。

詰まったところ

generatorに渡すモデル・コントローラー名の単数系・複数形

作るもの

ブログでありがちな記事とコメントの1対多の関係が出来るところまで。

環境

Lion
Rails3.2.3
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]

プロジェクト作成

$rails new sample_project -T

オプションTはユニットテストをプロジェクトに含まないで作成する。

Gemfile

source 'https://rubygems.org'
gem 'rails', '3.2.3'
gem 'execjs'
gem 'therubyracer'
gem "twitter-bootstrap-rails"
gem 'sqlite3-ruby'

group :development, :test do
gem 'rspec-rails'
gem 'sqlite3'
end

group :production do
gem 'pg'
end

group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

Rspec、bootstrapを使う。factry_girlは後で入れる。
execjs、therubyracerはJavascriptのランタイムだかv8なんたらエラーが出たので仕方なく入れた。
pgはherokuのため。

Rspecをインストール

$rails g rspec:install

モデルをgenerateする前にインストールしないと初期のspec作ってもらえないので急いでインストール。

モデルと足場を作成

所有する側の足場

rails g scaffold post name body:text

※足場の名前は"単数系"

所有される側のモデル、commentモデル

$rails g model comment name body:text post:references

references型を入力するとindex、外部キー、beongs_toあたりを自動で書いてくれる。
※モデルのみをgenerateする時は"単数"

commentコントローラー

$rails g controller comments

※コントローラー名は"複数形"
(複数形の理由は、アクションメソッドが複数あるからかと思っている)

モデル修正

postモデル
has_many :comments

※複数形

関連付けされているか確認

$rails c
$darui = Report.create
$darui.comments

空の配列が返ってくればOK。