X is not missing constant Y
Railsで階層化されたモデルの関連レコードのセッターメソッドを使用すると「X is not missing constant Y」というエラーが発生する。
# 以下のモデルがあったとして # models/hatena/diary.rb # models/hatena/comment.rb class Hatena::Diary < ActiveRecord::Base has_many :comments end class Hatena::Comment < ActiveRecord::Base belongs_to :diary end # こうするとエラーが出る comment = Hatena::Comment.new comment.diary = Hatena::Diary.create # ここでエラー => ArgumentError: Hatena is not missing constant Diary!
この問題はアソシエーションの定義時にクラス名を指定すると直る。
class Hatena::Diary < ActiveRecord::Base has_many :comments, :class_name => 'Hatena::Comment' end class Hatena::Comment < ActiveRecord::Base belongs_to :diary, :class_name => 'Hatena::Diary' end