2014-12-16 4 views
0

Когда я обновляю свою форму, она бросает ошибку для уникального поля.обновление действия не работает в rails 4

в моей модели

validates :url, presence: true, uniqueness: true, :if => lambda {self.role_id == 2} 

в моей форме

= f.text_field :url, :class => 'form-control' 

в мой контроллер

def update 
respond_to do |format| 
    if @user.update(user_params) 
    format.html { redirect_to stores_path, notice: 'Store was successfully updated.' } 
    else 
    format.html { render :edit } 
    end 
end 
end 

Даже если я что-то он дает мне ошибку не делает «Этот URL имеет уже принято ». Пожалуйста, помогите Заранее спасибо

+0

У вас уже есть объект с тем же URL-адресом, который вы сейчас хотите ввести. Как и в проверках модели, вы сказали, что url должен быть уникальным, и модель бросает ошибку. –

+0

@AlokSwain Вы правы. Но я просто обновляю объект и даже не изменяю алфавит в любых полях. Как он бросает ошибку для себя (это собственное значение поля). – techdreams

+0

ли вы где-то определенный @user, как находка (... –

ответ

0

Я решил этот путь.

def update 
respond_to do |format| 
    if @user.update(user_params) 
    format.html { redirect_to stores_path, notice: 'Store was successfully updated.' } 
    else 
    incoming_url = User.where("id=? and url=?",@user.id,params[:user][:url]) 
    if !incoming_url.blank? 
     format.html { redirect_to stores_path, notice: 'Store was successfully updated.' } 
    end 
    format.html { render :edit } 
    end 
end 
end 
Смежные вопросы