0

人が番号とキャリアによる統合を持っているかどうかを確認し、そうでない場合は番号のみによる統合と一致するかどうかを確認する次の方法があります。

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

私の質問は

  1. どうすれば協会に渡すことができnumber.idますhas_oneか?
  2. クエリはどのhas_oneようにしてメソッドクエリを保持できますか (人が番号とキャリアによる統合を持っているかどうかを確認し、番号のみによる統合と一致しない場合)
4

1 に答える 1