0

我知道这不是任何 belongs_to :through 在 Rails 中的关联,但我该如何解决呢?

  • User模型有很多Batches
  • Batch模型有很多Forecasts

我想创建一个关联,说明 aForecast属于 a User。但是,我知道由于 aForecast已经属于 a User,因此不需要存储used_idForecast模型中。

如何在模型之间ForecastUser通过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关联。

这种关系严格来说就是代码上所说的:一个用户可能有很多批次。批次是一组预测,因此一个批次可能有许多预测。由于 Batch 必须属于 User,而 Forecast 必须属于 Batch,因此 Forecast 属于 User。

我想从用户那里选择属于所有批次的所有预测。

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 中has_many :through您可以查看Rails 指南以了解如何使用它。

于 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 回答