0

私はそれが属するものではないことを知っています :Rails の関連付け, しかし、どうすればそれを回避できますか?

  • Userモデルが多いBatches
  • Batchモデルが多いForecasts

Forecastが に属していることを示す関連付けを作成したいと考えていますUser。ただし、 a はForecast既に a に属しているため、モデル内Userに格納する必要はないことを理解しています。used_idForecast

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 でそれを行うことは既に可能です。一方、予測はまだユーザーに属していません。どうやってやるの?

4

2 に答える 2

1

Railsにあります。 Railsガイドhas_many :throughをチェックして、使用方法を確認できます。

于 2013-03-22T18:27:40.350 に答える
0

ユーザーモデルで:

has_many :batches
has_many :forecasts, :through => :batches

バッチ モデルで:

belongs_to :user
belongs_to :forecasts

予測モデルで:

has_many :batches has_many :users, :through => :batches

最後の行は、完全な多対多の関係のように、関係を双方向にしたい場合です。

于 2013-03-22T18:33:38.100 に答える