人が番号とキャリアによる統合を持っているかどうかを確認し、そうでない場合は番号のみによる統合と一致するかどうかを確認する次の方法があります。
class Person
has_one :number
def integration
number_and_carrier = Integration.where('number_id = ? and carrier_id = ?', number.id, carrier.id) if number && carrier
Integration.where('number_id = ?', number.id) if number && number_and_carrier.nil?
end
end
次のコードは問題なく動作します。has_one
しかし、返される統合オブジェクトを完全に制御できるように、関連付けを使用して同じことをどのように達成できるのでしょうか。このようなものから始めることを想像できます
has_one :integration, foreign_key: :number_id
しかし、これは現在のperson_id
(7750) を使用していて、number_id
.
SELECT "integrations".* FROM "integrations" WHERE "integrations"."number_id" = 7750 LIMIT 1
私の質問は
- どうすれば協会に渡すことができ
number.id
ますhas_one
か? - クエリはどの
has_one
ようにしてメソッドクエリを保持できますか (人が番号とキャリアによる統合を持っているかどうかを確認し、番号のみによる統合と一致しない場合)