0
0

More than 3 years have passed since last update.

メモ(YAML関連)(シードファイル・フィクスチャファイル)(スキーマも)

Posted at

テストを書く際に、使用する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形式で記述可

books.yml
modernjs:
  id: 1
  isbn: 43u2843929
  title: アイウエオ
↑ここ半角2つスペース

みたいな感じで・・・

注意:外部キーは モデル名:参照先のラベル で表現される

user.yml
wataru:
  name: wawataru
  email: wawataru.jp
post.yml
post1:
  title: アイウエオ
  user: wataru   ←ここね!!!

user: 1とかすると、id情報を意識せなあかんくなって面倒
ラベルによる関連づけしたいときは、id明示せず、Railsで勝手にやらせる

スキーマファイルとは

(スキーマの更新履歴を表すマイグレーションファイルとは別)
最新のスキーマ情報を表すのがスキーマファイル
→マイグレーションファイルの集合とも言える
現在のDB状態を示す

※idはスキーマファイルには表示されない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0