Validation Rails3:嵌套模型-子级使用“方法结果”验证“U”;NameError-未初始化常量[parent]:[child]”;

Validation Rails3:嵌套模型-子级使用“方法结果”验证“U”;NameError-未初始化常量[parent]:[child]”;,validation,ruby-on-rails-3,model,nested,nameerror,Validation,Ruby On Rails 3,Model,Nested,Nameerror,考虑以下父/子关系,其中父与子的关系为1..n(此处仅涉及相关内容) …Rails不仅在尝试创建(初始持久化)用户数据之后,甚至在尝试构建初始表单时,都会返回NameError-uninitialized constant Parent::Kid错误。来自控制器的相关位: def new @parent = Parent.new @parent.kids.new # NameError, validates_* methods called within end def create @

考虑以下父/子关系,其中父与子的关系为1..n(此处仅涉及相关内容)

…Rails不仅在尝试创建(初始持久化)用户数据之后,甚至在尝试构建初始表单时,都会返回
NameError-uninitialized constant Parent::Kid
错误。来自控制器的相关位:

def new
 @parent = Parent.new
 @parent.kids.new # NameError, validates_* methods called within
end

def create
 @parent = Parent.new(params[:parent])
 @parent.save # NameError, validates_* methods called within
end
该错误表明,在错误消息构造的模型名(可能还有字段名?)解析过程中,某些地方发生了冲突。但是为什么有些
验证方法会发生这种情况,而其他方法不会


还有人用这个撞墙吗?我是否需要一些仪式来完成这项工作,特别是关于型号名称的仪式?

离开几小时后,重新回来——在
家长
课上缺少
要求“孩子”
。将进行编辑。

我觉得这不太合适——你不应该需要另一个型号。我觉得也很奇怪。但这确实奏效了。很可能在我的模拟示例之外还有其他东西需要“require Kid”。
 class Kid < ActiveRecord::Base

   belongs_to :parent

   validates_with TrivialValidator

 end

 class TrivialValidator

   def validate
      if record.item != "good"
        record.errors[:base] << "Bad item!"
      end
   end

 end
def new
 @parent = Parent.new
 @parent.kids.new # NameError, validates_* methods called within
end

def create
 @parent = Parent.new(params[:parent])
 @parent.save # NameError, validates_* methods called within
end