我在查询模型控制器使用以下代码:
@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 :(得分:0)
这是Mongoid的Mongoid::Criteria
所做的:它构建一个表示为first
对象的查询。 ActiveRecord做同样的事情,解决方案是相同的:
使用last
/ @user_forecast = UserForecast.where(...).first
/ ...从查询中抓取一个结果:
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)
)
找到一个:
var data = '{"2":"value1", "3":"value2", "4":"value4"}'; // outer quotes converted to single quotes
var result = JSON.parse(data);
console.log(result["2"]); // "value1"