私はそれが属するものではないことを知っています :Rails の関連付け, しかし、どうすればそれを回避できますか?
User
モデルが多いBatches
Batch
モデルが多いForecasts
Forecast
が に属していることを示す関連付けを作成したいと考えていますUser
。ただし、 a はForecast
既に a に属しているため、モデル内User
に格納する必要はないことを理解しています。used_id
Forecast
Forecast
モデル間およびモデルをUser
介してこの関係を作成するにはどうすればよいBatch
ですか?
編集
私の問題をよりよく説明しましょう。
次のモデルと関連付けがあります。
User < ActiveRecord::Base
has_many :batches
# has_many :forecasts, through: :batches
end
Batch < ActiveRecord::Base
belongs_to :user
has_many :forecasts
end
Forecast < ActiveRecord::Base
belongs_to :batch
# belongs_to :user, through: :batch
end
コメントされた行は私がやりたいことですが、belongs_to :through
関連付けがないためできません。
この関係は厳密にはコードで述べられているとおりです。ユーザーは多くのバッチを持つことができます。バッチは一連の予測であるため、バッチには多くの予測が含まれる場合があります。バッチはユーザーに属している必要があり、予測はバッチに属している必要があるため、予測はユーザーに属します。
ユーザーからすべてのバッチに属するすべての予測を選択したいと考えています。
current_user.forecasts
私がそうしたい理由は、ユーザーの範囲を自分のバッチと予測のみに制限するためです。そのため、コントローラーのアクションでは、代わりに
Batch.find(params[:id])
また
Forecast.find(params[:id])
私は作ることができます
current_user.batches.find(params[:id])
また
current_user.forecasts.find(params[:id])
Batch でそれを行うことは既に可能です。一方、予測はまだユーザーに属していません。どうやってやるの?