2011-12-31 36 views
0

我對Ruby on Rails相當陌生,在我的應用程序中,用戶可以創建只在整個記錄是唯一的情況下才會保存的「構建」記錄。如果用戶試圖創建現有的「構建」/記錄並且驗證失敗,我需要能夠將該用戶重定向到現有記錄。after_validation在Rails中查找現有記錄的ID

正如我所說的,我是新手,在使用傳遞給我的創建行動,所以參數做出了勇敢的嘗試:

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查看回調,但不知道如何訪問甚至存儲現有記錄的ID。任何人有任何建議?

回答

0

你需要的屬性/值哈希作爲傳遞:條件選項,你需要指定:第一:最後,或:所有作爲第一個參數。

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

或者,你可以用它代替使用#find#first方法:第一說法。

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

在Rails 3,你還有另一種選擇......

@bexist = Build.where(params[:build]).first 
+0

就像一個魅力!我一直在瘋狂地試圖找出這個問題,當然事實證明它非常簡單。謝謝! – Gryn 2011-12-31 22:38:02