2013-03-22 2 views
0

내가 알고있는 것은 belongs_to가 아닙니다. Rails의 연관성을 통해 알지만, 어떻게 해결할 수 있습니까?연관 belongs_to : through

  • User 모델은 많은 Batches
  • Batch 모델은 내가 ForecastUser에 속한다는 것을 알리는 연결을 만들려는

많은 Forecasts을 가지고있다. 그러나 Forecast은 이미 User에 속하기 때문에 내부에 Forecast 모델을 저장할 필요가 없습니다.

ForecastUser 사이의 관계를 Batch 모델을 통해 어떻게 만들 수 있습니까?

편집

나를 더 내 문제를 설명하겠습니다. 더 belongs_to :through 협회가 없기 때문에,

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 

주석 처리 된 줄은 내가하고 싶은 것입니다,하지만 난 할 수 없습니다 :

나는 다음과 같은 모델과 연관이있다.

관계는 엄격하게 코드에서 말한 것입니다 : 사용자는 많은 배치를 가질 수 있습니다. 일괄 처리는 일기 예보이므로 일괄 처리에는 여러 예측이있을 수 있습니다. 일괄 처리는 사용자에 속해야하며 일괄 처리는 일괄 처리에 속해야하므로 일기 예보는 사용자에게 속합니다.

사용자로부터 모든 배치에 속한 모든 예측을 선택하고 싶습니다.

current_user.forecasts 

내가 원하는 이유는 사용자의 범위를 자체 일괄 처리 및 예측으로 제한하는 것입니다.

Forecast.find(params[:id]) 

컨트롤러 액션에 그래서, 대신

Batch.find(params[:id]) 

또는

나는 배치와 그렇게 할 이미 수

current_user.batches.find(params[:id]) 

또는

current_user.forecasts.find(params[:id]) 

을 만들 수 있습니다. 반면에 예측은 사용자에게 속하지 않습니다. 어떻게해야합니까?

답변

1

여기에서 은 레일즈에서has_many :through입니다. the Rails guide을 확인하여 사용 방법을 확인할 수 있습니다.당신의 일괄 처리 모델에서

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

:

has_many : 일괄 has_many : 당신의 예측 모델에서

belongs_to :user 
belongs_to :forecasts 

귀하의 사용자 모델에서

+0

실제로, 그러나 내 요구와는 약간 다릅니다. 이 경우 하나의 모델 만이 연관의 두 ID를 저장합니다. Forecast에 batch_id가 있고 Batch에 user_id가 있어야합니다. 그리고 일괄 처리를 통해 사용자와 예측 간의 관계를 만들어야합니다. –

+0

제목과 질문을 변경했습니다. 사실 나는 belongs_to through에 대해 말하고있었습니다. ;) –

0

사용자 : 통한 => : 일괄 처리

마지막 줄은 관계를 원할뿐입니다. 배를 타고 다방면으로 가야한다.

관련 문제