2012-02-05 45 views
3

如何驗證一個表中的列對其他表中的條目?如何驗證其他表中的對應條目是否存在

我用來驗證列項中的代碼「:PRODUCT_ID」表「Preperiod」在表中「產品」的列「ID」的存在是

validate :product_id_exists 
def product_id_exists 
if Product.find_by_id(:product_id)==nil 
    errors.add(:base, "Product must be defined") 
end 
end 

但現在我得到的錯誤即使product_id是正確的。我做錯了什麼?

我使用Ruby 1.9.2和3.0.9軌道

+0

什麼語言和/或數據庫系統?一般來說,這聽起來像是關係數據庫系統中兩個表之間的外鍵關係的經典案例... – 2012-02-05 09:27:26

+0

我已經添加了rails標記,因爲它看起來像一個Rails問題。那是對的嗎? – lucapette 2012-02-05 09:40:35

+0

@lucapette是的,正確的,謝謝。 – user1187441 2012-02-05 09:47:35

回答

1
Product.find_by_id('here you should specify value of id field ... ') == nil 

,所以你的代碼應該是這樣的:

Product.find_by_id(product_id) == nil 

或:

Product.find_by_id(self.product_id) == nil 

或:

Product.find_by_id(self[:product_id]) == nil 
+1

當你正在編寫這樣的代碼時,最好使用'.nil?'或者在另一種情況下'.present?'方法:'Product.find_by_id(product_id).nil?' – phoet 2012-02-05 14:32:10

+0

Thx for your answer。這解決了我的問題。 =) – user1187441 2012-02-06 11:20:01

相關問題