2016-11-25 16 views
0

(# Mongoid ::代わりに、結果の基準

@user_forecast = UserForecast.where(forecast_id: user_forecast_params[:forecast_id] , project_role_id: user_forecast_params[:project_role_id]) 

モデルがありますパラメータが正しく定義されていれば、パラメータが存在します。しかし、UserForecastのインスタンスを返す代わりに、Mongoid :: Criteriaのインスタンスを返します。

この行以下のエラーで

logger.debug @user_forecast.id 

結果: `

NoMethodError (undefined method `id' for #<Mongoid::Criteria:0x00000004caa108>): 

私は何が起こっているのか見当もつかない。

答えて

0

これは、Mongoidのwhereが行うことです。Mongoid::Criteriaオブジェクトとして表されるクエリを作成します。 ActiveRecordのは、同じことをして、解決策は同じです:

  1. 使用first/last/...クエリからちょうど1の結果つかむために:

    @user_forecast = UserForecast.where(...).first 
    
  2. ベター、見つけることfind_byを使用します正確に一つ一つだけがあると期待している場合:

    @user_forecast = UserForecast.find_by(
        forecast_id:  user_forecast_params[:forecast_id], 
        project_role_id: user_forecast_params[:project_role_id] 
    ) 
    @user_forecast = UserForecast.find_by(
        user_forecast_params.slice(:forcecast_id, :project_role_id) 
    ) 
    
+0

感謝 君は!それでおしまい! – Boenne

関連する問題