2012-02-05 2 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が正しい場合でも私は何を間違えたのですか?

私はルビー1.9.2を使用するので、あなたのコードは次のようになります3.0.9

+0

どの言語および/またはデータベースシステムですか?これは、リレーショナルデータベースシステムの2つのテーブル間の外部キー関係の古典的なケースのようです。 –

+0

Railsの質問のように見えるので、railsタグを追加しました。あれは正しいですか? – lucapette

+0

@lucapetteはい、正解、ありがとうございます。 – user1187441

答えて

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

+0

あなたの答えはThxです。これは私の問題を解決しました。 =) – user1187441

関連する問題