テストを書く際に、使用するYAMLの書き方がわからなくなったので整理してみた。
関連づけがある場合どうすりゃえんや
ActiveRecord経由でDBに接続するには、
config/ymlで
YAMLとは
構造化データの記述に適したファイル形式
構造をインデントや、記号で表現する
パラメーター名:値
の形式で表すのが基本
例えば
production:
database: db/production.sqlite3
これはproductionパラメータのサブパラメータdatabaseを表す。
値はdb/production.sqlite3
インデントは必ず空白で表現する(一般的には半角スペース二つ)
シードファイルとフィクスチャ
スキーマ用意後 → データを初期化する必要性
ここで、データを初期化するために、シードファイルか、ファイクスチャと言う二つのアプローチを提供
・フィクスチャはテストデータの投入に使う
・シードはマスターテーブルの初期データを投入するために利用するのが基本
シードファイル
単なるrubyのスクリプトコード
Rubyで生成/保存するコードを記述していくだけでok
Book.create(id:1, isbn: '0843-4398-39', price: '技術評論者')
みたいな感じで・・・
rails db:seed
で実行
フィクスチャ
こちらはYAML形式で記述可
例
modernjs:
id: 1
isbn: 43u2843929
title: アイウエオ
↑ここ半角2つスペース
みたいな感じで・・・
注意:外部キーは モデル名:参照先のラベル で表現される
wataru:
name: wawataru
email: wawataru.jp
post1:
title: アイウエオ
user: wataru ←ここね!!!
user: 1とかすると、id情報を意識せなあかんくなって面倒
ラベルによる関連づけしたいときは、id明示せず、Railsで勝手にやらせる
スキーマファイルとは
(スキーマの更新履歴を表すマイグレーションファイルとは別)
最新のスキーマ情報を表すのがスキーマファイル
→マイグレーションファイルの集合とも言える
現在のDB状態を示す
※idはスキーマファイルには表示されない