我有两个模特,角色和倡议,他们的关系是角色有一个主动和主动belogns_to角色。我正在为Initiative进行验证,并且我已经开始工作了,但问题是在输入任何信息之前,在为Character创建新的Initiative记录时会出现所有验证错误。有任何想法吗?这是来自Initiatives控制器的代码:
def new
@character = Character.find(params[:character_id])
@initiative = @character.create_initiative(params[:initiative])
end
def edit
@character = Character.find(params[:character_id])
@initiative = @character.initiative
end
def create
@character = Character.find(params[:character_id])
@initiative = @character.create_initiative(params[:initiative])
if @initiative.save
redirect_to character_path(@character), :notice => "initiative successfully created!"
else
render :action => "new"
end
end
def update
@character = Character.find(params[:character_id])
@initiative = @character.initiative
if @initiative.update_attributes(params[:initiative])
redirect_to character_path(@character), :notice => 'Initiative information was successfully updated.'
else
render :action => "edit"
end
end
以下是我的模型中的验证:
validates_presence_of :dex, :misc, :speed
validates_numericality_of :dex, :misc, :speed
我很确定问题出在创建或新方法上,但我不确定为什么在用户输入任何信息之前它会触发验证。有帮助吗?也许不是一个大问题,因为代码IS工作,但我不想在实际收到错误之前显示错误消息。谢谢!
答案 0 :(得分:1)
你不应该在新行动中使用build_initiative而不是create_initiative吗?在向用户发送打算创建它的表单时,无需保存对象。此外,如果你的角色有一个主动权,他只能有一个,所以我怀疑AR赞赏你试图创造另一个。
请参阅http://guides.rubyonrails.org/association_basics.html#has_one-association-reference