ぼくらの研究

ぼくらのための研究をしていきます。

[Rails]validationで他のテーブルの値を参照して入力した値があるか確認する

   

例えば

・UserモデルとArticleモデルが一対多で関連付けられている。(Userがhas_manyでArticleを持っている)
・Articleモデルを作成、編集する際にUserのidを入力する

みたいな感じになっている場合にform_forとかで入力した値がUserテーブルのidカラムに存在するかどうかを確認するためにどういうバリデーションを書けばいいか、という話。

要は入力した値が他のテーブルの特定のカラムのデータにあるかどうかを調べるvalidatesです。

コードは以下の通り。

Rails標準のvalidateメソッドの中にはこういうvalidation機能はなさそうだったので自分でカスタムメソッドを組む必要がありました。Rails 5系環境での動作確認はしてますがRails 4系環境でもたぶん使えます。

以上、ご参考になれば幸い。