Ошибки проверки, появляющиеся перед отправкой информации в Rails? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть две модели, Персонаж и Инициатива, и их отношения - Персонаж has_one Инициатива и Инициатива belogns_to Персонаж.Я работаю над проверкой для Инициативы, и она у меня работает, но проблема в том, что все мои ошибки проверки появляются при создании новой Инициативной записи для Персонажа перед вводом какой-либо информации.Есть идеи?Вот мой код из контроллера 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

Я почти уверен, что проблема заключается в методах create или new, ноЯ не уверен, почему он запускает проверку, прежде чем пользователь вводит какую-либо информацию.Любая помощь?Возможно, это не большая проблема, так как код работает, но я бы предпочел не отображать сообщение об ошибке, прежде чем получит ошибку.Спасибо!

1 Ответ

1 голос
/ 05 сентября 2011

разве вы не должны использовать build_initiative вместо create_initiative в вашем новом действии?Не нужно сохранять объект при отправке пользователю формы, которая намеревается его создать.Более того, если у вашего персонажа есть инициатива - одна, у него может быть только одна, поэтому я сомневаюсь, что AR ценит то, что вы пытаетесь создать другую.

см. http://guides.rubyonrails.org/association_basics.html#has_one-association-reference

...