私のコードにいくつかの問題があります。これはおそらく設計上の問題が原因です。私はいくつかのことを試しました。ここに2つあります。ActiveRecordの関連付けを持つ多くの人から最新の単一項目を取得するにはどうすればよいですか?
問題:私は1 (lending) - N (contracts)
の関係を持っています。最後に関連する契約を返すlending.current_contract
に電話したいと思います。 最適化も問題です。私は:lending, :include => :contracts
に電話して、すべての契約を含む契約配列に既に入っている契約のために別々のクエリを使用する必要はありません。
悪い解決策1:
has_one :current_contract, :class_name => "Contract"
これは、同様に親融資を更新する必要があり、私が作成するたびので、仕事更新したり破壊されることはありません。これを行うと、私はコールバック混乱を取得します。たとえば、貸出を作成するときには、最初の契約も作成されます。何らかの理由で、両方の融資契約のコールバックを使用して前後しているため、契約が機能しません。
悪い解決策2:
def current_contract
return if contracts.relevant.empty?
@current_contract = contracts.relevant.last
end
が参照コピーを送信していません。したがってlending.current_contract.status = value
は機能しません。
見るべきデザインパターンはありますか?いくつかの例がありますか?私はgithubプロジェクトをいくつか見てきましたが、どれも同じような問題が解決されていないので、設計上の問題だと思います。