Rails - 「に属する可能性がありますか?」をコード化する方法
-
21-09-2019 - |
質問
私は、多数の人々に関する情報を含む Rails アプリを開発しています。次の 2 つの使用例があります。
- 管理者は個人のプロファイルを入力して管理します
- ユーザーは、自分のプロファイルをサインアップ、ログイン、維持することを決定できます。
プロフィールとユーザーの関係を解明しようとしています。今のところ、それは、 profile belongs_to :user
, 、 そして user has_one :profile
.
しかし、一部のプロファイルにはまだユーザーが存在せず、管理者によって管理されているため、これは問題になります。その場合、 user_id
の列 profiles
null の場合、結合は失敗し、ページは読み込まれません。++
「おそらくbelongs_to」のような関係を設定するにはどうすればよいでしょうか?
++(実際には、エラーは表示されず、空白で表示されます。 development.log
にもエラーはありませんが、ユーザーがいるプロファイルに対して実行するすべてのクエリが完了していないことがわかります。代わりに役立つエラー メッセージを取得する方法を誰かが知っていれば、それも素晴らしいことです。)
解決
このはそれを行うための正しい方法です。 belongs_to
はnull
値を防ぎ、そしてあなたが望むもののようなこの音はありません。
そのプロファイルのユーザーテーブルを照会する必要(または方法)はありませんので、まだユーザーに属していないプロファイルの「ページ」は、多くのクエリとして持っていない可能性があります。
あなたはprofile.user
ためnil
をチェックし、それに応じて自分の意見を提示しなければならない。
他のヒント
Profile
が本当にUser
に属している場合、それが今まで(それはそれはに添付ますEngine
なしCar
を考慮しても意味がありません同じように)はnullをすべきではありません。あなたがそうProfile.belongs_to :user
の関連付けを削除する必要があります。
これは、編集Profiles
自由にできるようにし、単に彼らだ準備ができたらUser
にそれらを添付しなければなりません。しかし、あなたは別の問題があります:
人は、サインアップしてログインし、自分のプロフィールを維持することを決定することができます。
どのようにシステムが確実に事前に作成したプロファイルは、まだプロファイルを持っていない特定のユーザーに属するかを識別しますか?それはあなたが整理する必要があります設計上の問題です。