2011-11-09 35 views
0

如果用戶試圖進入一個重複的條目到表中,他們得到一個整版討厭的錯誤重複條目的軟數據庫錯誤處理? - Rails的3.1新手

ActiveRecord::RecordNotUnique in Admin::MerchantsController#add_alias 

Mysql2::Error: Duplicate entry '2-a' for key 'merchant_id': .. 

有沒有辦法給代替,如「這個紀錄已經存在的閃光消息「?

回答

0

我不會建議檢查的獨特性和具體通過閃光消息響應,這個驗證規則,這通常應該由窗體的錯誤消息,而不是進行處理。

然而,在創建控制器操作和更新,你可以換的條件塊,決定在哪裏發送用戶,與獨特性首先檢查:

def create 
    @merchant = Merchant.new params[:merchant] 
    if Merchant.where(:merchant_id => @merchant.id).count > 0 
    flash[:error] = "The merchant id #{@merchant.id} already exists" 
    render :create # amend this to :update when applying to the update action 
    else 
    # your normal generated save and render block 
    end 
end 

這不是最徹底的方法實現你的目標,但我認爲這將是最容易理解的。

會真的推薦模型驗證和表單錯誤消息,如果您使用生成的腳手架,您只需添加模型驗證並將表單向用戶拋出錯誤消息:

# app/models/merchant.rb 
class Merchant < ActiveRecord::Base 
    validates_uniqueness_of :merchant_id 
end 
+0

讓模型檢查唯一性仍會拋出一個完整的頁面錯誤(儘管對這些錯誤的措辭略好一些)。 – Hopstream