after_validation найти идентификатор существующей записи в Rails - PullRequest
0 голосов
/ 01 января 2012

Я довольно новичок в Ruby on Rails, и в моем приложении пользователь может создать запись «сборки», которая будет сохранена, только если вся запись уникальна. Если пользователь пытается создать существующую «сборку» / запись и проверка не проходит, мне нужно иметь возможность перенаправить этого пользователя в существующую запись.

Как я уже говорил, я новичок и сделал доблестную попытку использовать параметры, переданные моему действию создания, следующим образом:

    def create

    @build = Build.new(params[:build])

    if @build.save
        redirect_to :action => 'view', :id => @build.id 
    else
        @bexist = Build.find(params[:build])
        redirect_to :action => 'view', :id => @bexist.id
    end

end

Ясно, что это не правильно ... Я также пытался просмотреть обратные вызовы с помощью after_validation, но не был уверен, как получить доступ или даже сохранить идентификатор существующей записи. У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 01 января 2012

Вам необходимо передать хэш атрибута / значения как параметр: condition, и вам нужно указать : первый , : последний или : все в качестве первого аргумента.

@bexist = Build.find(:first, :conditions => params[:build])

В качестве альтернативы вы можете использовать метод # first вместо использования # find с : first аргумент.

@bexist = Build.first(:conditions => params[:build])

В Rails 3 у вас есть еще один вариант ...

@bexist = Build.where(params[:build]).first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...