我有兩個模型,Character和Initiative,他們的關係是Character has_one Initiative和Initiative belogns_to Character。我正在爲Initiative進行驗證,並且已經開始工作,但是在輸入任何信息之前,爲Character創建新的Initiative記錄時出現所有驗證錯誤。有任何想法嗎?下面是從倡議控制器我的代碼:在Rails中提交信息之前出現驗證錯誤?
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
我敢肯定問題出在創建或新的方法,但我不確定爲什麼它會在用戶輸入任何信息之前觸發驗證。任何幫助?也許不是一個大問題,因爲代碼正在工作,但我寧願在實際出現錯誤之前不顯示錯誤消息。謝謝!
'validate'肯定會被調用。問題在哪裏。 'new.html.erb'中有什麼?在模型中添加一個'before_validate',看看它是否被調用並從哪裏調用。也許'new'中的'create_initiative'導致驗證 – Zabba
你是對的,'create_initiative'確實調用驗證。請參閱我答案中的鏈接。 –