我知道这不是任何 belongs_to :through 在 Rails 中的关联,但我该如何解决呢?
User
模型有很多Batches
Batch
模型有很多Forecasts
我想创建一个关联,说明 aForecast
属于 a User
。但是,我知道由于 aForecast
已经属于 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
关联。
这种关系严格来说就是代码上所说的:一个用户可能有很多批次。批次是一组预测,因此一个批次可能有许多预测。由于 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 已经可以做到这一点。另一方面,预测还不属于用户。我怎样才能做到这一点?