Mongoid'where'查询返回Mongoid :: Criteria而不是result(#mongoid :: criteria的未定义方法)

时间:2016-11-25 14:51:49

标签: ruby mongodb ruby-on-rails-4 mongoid criteria

=“”

我在查询模型控制器使用以下代码:

@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>):

我不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

这是Mongoid的Mongoid::Criteria所做的:它构建一个表示为first对象的查询。 ActiveRecord做同样的事情,解决方案是相同的:

  1. 使用last / @user_forecast = UserForecast.where(...).first / ...从查询中抓取一个结果:

    find_by
  2. 最好,如果您希望只有一个,请使用@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) ) 找到一个:

    var data = '{"2":"value1", "3":"value2", "4":"value4"}'; // outer quotes converted to single quotes
    var result = JSON.parse(data);
    console.log(result["2"]);  // "value1"