the industrial

都内で働くITエンジニアの日記

FactoryBotでassociationアリのデータを作成しようとした時、「ActiveModel::MissingAttributeError: can't write unknown attribute `fk_XXXXXXXX`」といったエラーが出る件について

タイトルだけだと何いってんだか全然わからんですね笑

ちょっと困ってます。

例えばこんなModelがあったとして

app/models/Employee.rb

class Employee < ActiveRecord::Base
  # 上司
  belongs_to :boss, foreign_key: 'fk_employee_to_boss', optional: true
end

※つまりは自己結合

Active Record の関連付け (アソシエーション) | Rails ガイド

FactoryBotでこんなデータを作成し

spec/factories/Employees.rb

FactoryBot.define do
  factory :boss, class: User do
    name { "上司太郎" }
  end

  factory :user, class: User do
    name { "部下太郎" }
    association :boss, factory: :boss, strategy: :create
  end
end

テストケースで呼び出した場合

  it "hogehoge test" do
    # ・・・
    @user = create(:user)
    # ・・・
  end

下記のようなエラーが出てしまう

Failures:

  1) Hoges::HogeHogeController hogehoge test
     Failure/Error: @user = create(:user)

     ActiveModel::MissingAttributeError:
       can't write unknown attribute `fk_employee_to_boss`

一応、modelのforeign_keyを取ってしまえば、FactoryBotも正常に動作するで、一旦それで対応・・・。

app/models/Employee.rb

class Employee < ActiveRecord::Base
  # 上司
  belongs_to :boss, optional: true
end

たまりに溜まった映画感想文17件を一気に書いた

LOGAN/ローガン (吹替版)

感想というか、自分でも観た映画かどうか忘れることがあるので、メモなだけw

この中では「カメラを止めるな」「LOGAN」「デップー2」「マンチェスター・バイ・ザ・シー」が良かったな。

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

omiend.hatenablog.jp

マンチェスター・バイ・ザ・シー

マンチェスター・バイ・ザ・シー (字幕版)

ココ最近では一番おもしろかったな!

ケイシー・アフレックもだいぶ歳をとって、いい感じの渋さが出てきはった。

序盤は何がなんだかワカラナイのだけど、中盤から一気に話が重たくなって、もう終盤ずっと涙目。

ラストのどうでも良い感じが、逆に幸せを感じられて、すごく良い終わり方に思う。

メイズ・ランナー:最後の迷宮

映画ポスター メイズランナー 3 最後の迷宮 The Death Cure US版 hi2 [並行輸入品]

もはや迷宮関係ないのだ。

1はめっちゃ面白く、2は惰性。

そしてラストの今作も惰性w

しかもどうでも良い所で頑張ってるので、観ていてちょっと冷めてしまう感じ。

ここまで引っ張っといて、オチもなんか微妙という・・・w