存在しないときに例外をスローする方法を、私は2つのモデルがあります。存在しない製品IDを使用してみましたが、product_id
の列はnullになります。私はこのように挿入するときに例外をスローしたい。ActiveRecordのは:参照キーは、例えば
validate
をモデルに挿入してから挿入する前に確認する方法があります。しかし、クライアントがそれをしないので、これは時間がかかると思います。 (何かが本当に間違っていた場合に備えて)。
存在しないときに例外をスローする方法を、私は2つのモデルがあります。存在しない製品IDを使用してみましたが、product_id
の列はnullになります。私はこのように挿入するときに例外をスローしたい。ActiveRecordのは:参照キーは、例えば
validate
をモデルに挿入してから挿入する前に確認する方法があります。しかし、クライアントがそれをしないので、これは時間がかかると思います。 (何かが本当に間違っていた場合に備えて)。
これはリレーショナルデータベースの利点の1つです。マイグレーションにforeign_key参照を追加でき、すべてが完全に機能するはずです。実在しない製品を保存するすべての試みが失敗する場所でこれにより
class AddForeignKeyToCheckInDetails < AR::Migration
def change
remove_foreign_key :check_in_details, :products
add_foreign_key :check_in_details, :products, dependent: :delete
end
end
:あなたは、移行にrails g migration add_foreign_key_to_check_in_details
で移行を実行することができ 、あなたのような何かを追加する必要があります。 product_id
カラムにNOT NULL制約を追加することも忘れないでください。check_in_detailをnull product_idで保存しようとすると成功します。移行へのアップデートは、次のようになります。
change_column :check_in_details, :product_id, :integer, null: false
はそれがあなたの質問に答えるなら、私に教えてください。
のみが動作します。両方をする必要がありますか?ありがとう。 –
?あなたは列とadd_referenceを変更することを意味します。はい、参照を追加することはできますが、 'nil' product_idを使った投稿はできません。 – oreoluwa
ああ。わかりました。あなたの親切な説明をありがとう:D –