LoginSignup
0
0

More than 1 year has passed since last update.

[Rails] undefined method `has_many' for main:Objectと出てきた時

Posted at

はじめに

DM機能を実装中に
undefined method 'has_many' for main:Object
という見たことがなかったエラーに遭遇したので記事にしました。

結論

今回の場合はhas_manyのせいではなくroom.rb(Roomモデル)の一行目の記述が何故か消えてしまった事によるものでした。

room.rb
class Room < #この部分が消えていた!
  has_many :users, through: :user_rooms
  has_many :chats, dependent: :destroy
  has_many :user_rooms, dependent: :destroy
end

正しくは

room.rb
class Room < ApplicationRecord
  has_many :users, through: :user_rooms
  has_many :chats, dependent: :destroy
  has_many :user_rooms, dependent: :destroy
end

他にも

少し調べただけですがタイポしてたりするとこのエラーが発生するようです。

put 'Hello World!'
#=> undefined method `put' for main:Object (NoMethodError)

→正しくはputs
この場合はタイポしているメソッドに対してエラーが出るのでわかりやすい。

他にも中身が入っていないもの(nil)に対してメソッドを書いているとか。
この場合もメソッドに対してエラーが出るみたいなのでちょっとわかりにくいですね。

参考にさせていただきました

最後に

今回はすぐに気が付けましたがhas_manyの方がを深堀りしていたらきっとまだ解決していなかったかもな、と思うとエラー文の周りを見ることの大事さを実感しました。

最後まで閲覧頂きありがとうございました!

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