fixtureで関連先の*_idカラムの書き方
のリレーションでidを自動解決するので_id の記述は不要
_id の代わりにリレーション名を指定する
model間で関連付けされていることが前提になる
code: (rb)
class Practice < ApplicationRecord # rubocop:todo Metrics/ClassLength
...
has_one :learning_minute_statistic, dependent: :destroy
end
class LearningMinuteStatistic < ApplicationRecord
belongs_to :practice
end
code: (rb)
# schema.rb
create_table "learning_minute_statistics", force: :cascade do |t|
...
t.bigint "practice_id"
...
end
code: (yml)
// test/fixtures/practices.yml
practice1:
...
NG例)
リレーションで自動解決するので_id は不要
→ 文字列 "practice1" をそのままIDとして扱おうとする(数値ではないので結果的にnilになる)
code: (yml)
// test/fixtures/learning_minute_statistics.yml
learning_minute_statistic1:
practice_id: practice1.id
OK例)
→ practices.yml の practice1 を参照して、そのレコードのIDを自動でセットしてくれる
code: (yml)
// test/fixtures/learning_minute_statistics.yml
learning_minute_statistic1:
practice: practice1
参照
https://railsguides.jp/testing.html#yaml
#Rails
#DB