Rails 3.2アプリがあり、モデルが1つあります。これを、Carと呼びましょう。
ユーザーが一連の情報を入力すると、アプリはその情報に基づいて提案された車のリストを返します。現在、各車には、提案された張り、提案された色など、ユーザーが望む場合と望まない場合がある一連の一時的なプロパティがあります。これらの「提案された」プロパティは、ユーザーが入力した情報に基づいてオンザフライで計算されます。そのため、アプリはユーザーが必要とする可能性のある車を推測するだけでなく、ユーザーが必要とする可能性のある追加オプションも推測し、その情報を一時的に車のレコードに保存します。
これは、Carモデルの関連部分の疑似コード表現です。
def self.suggested_cars
@cars = basic_cars(user_height, user_weight)
add_upholstery_suggestions(@cars, user_wealth)
add_color_suggestions(@cars, user_gender)
end
問題は、車とオプションを提案するためのアルゴリズムが、明確ではない実際の車のレコードを返す可能性があることです。たとえば、提案された車に対する1つのリクエストでは、革張りのシートを備えた車Aと車Aの両方を返すことができます。しかし、問題があります。アクティブレコードから同じエンティティの2つを同時に要求すると、両方のインスタンスが同じオブジェクトを参照するためです。つまり、異なる一時データを持つことはできません。
その場合、オブジェクトをコピーするために.dupメソッドを使用する必要があるのではないかと思いますが、もっと洗練された解決策があるように感じます。私はどんな提案にもオープンです。このタイプの状況を処理する一般的な方法はありますか?