Validation Rails3:嵌套模型-子级使用“方法结果”验证“U”;NameError-未初始化常量[parent]:[child]”;
考虑以下父/子关系,其中父与子的关系为1..n(此处仅涉及相关内容) …Rails不仅在尝试创建(初始持久化)用户数据之后,甚至在尝试构建初始表单时,都会返回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 @
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