エスパーしてみます。
テーブルとモデルの定義が合っていないのが怪しそう、と思いました。
models/room.rb
には belongs_to :staff
とあります。
その場合、rooms テーブルには staff_id
があるのかなと思ったら無いようですし。
もし staff_name
でリレーション設定する場合は以下のようにカラム名を明示的に指定する必要があります。
class Room < ApplicationRecord
belongs_to :staff, foreign_key: :staff_name
...
end
foreign_key: true
は model ではなく migration ファイルに書くやつだった気がします。
Active Record マイグレーション - Railsガイド
ただ、これだと同じ名前のスタッフがいたらどうするのか、などの問題があるので、リレーションはなるべくidを使った方が良いです。
ということで、Room
モデルとテーブルを以下のようにしてはみるのはどうでしょうか。
class Room < ApplicationRecord
belongs_to :staff
belongs_to :user
validates :user, presence: true
validates :staff, presence: true
end
|id|name|user_id|staff_id|created_at|updated_at|
フォームからは staff_name
ではなく staff_id
を post するように変更すれば良さそうです。