多分奇妙なビット。しかし、2つのモデルの関係はオプションです。ユーザーモデルにはデッドラインがありますが、デッドラインのユーザーフィールドはオプションです。満たされていない場合、締め切りは一般的なものであり、すべてのユーザーに有効です。 has_manyのrelationshopを決定する際にRailsのhas_manyと外部キーとの関連付けを拡張する
、私は現在のオブジェクトのUSER_IDを持っ締切モデル内のレコードのため、だけでなく、ゼロ値のためではないだけを見てみたいです。
私はこれを試してみましたが、それは動作しません:
has_many :deadlines, -> (object){where(user: [nil, object.id])}, foreign_key:''
クエリは、元の場所と正しいクエリにはなりません。また、などのカスタム1を、添付含め保持します。あなたは、プレーン、プレーンSQLを使用することができ、また
has_many :deadlines, -> (object) { where("deadlines.user_id = #{object.id} OR deadlines.user_id IS NULL") }
:あなたは常にwhere
句にプレーンなSQLを置くことができます
SELECT "deadlines".* FROM "deadlines" WHERE ("deadlines"."user_id" = 1 OR "deadlines"."user_id" IS NULL)
has_many:締め切り、 - >(オブジェクト){ ( "user_id =? OR USER_ID =?」あなたはこの –
ではありませんてみてくださいすることができ、ゼロ、object.id) }それとまったく同じ? –
したいとき。AND条件にあなたを取るデフォルトになります配列内のクエリデータを渡すときOR条件、明示的に記述する方がよいでしょう。 –