这是最古怪的。
当我访问时:
/ingredients/14.json
我得到了
{ id: 13,
name: "Tomato",
category: "Vegetable",
created_at: "2013-11-20T04:35:36.704Z",
updated_at: "2013-11-20T05:59:34.444Z"
}
在日志中:
Started GET "/ingredients/14.json" for 127.0.0.1 at 2013-11-19 22:02:35 -0800
Processing by IngredientsController#show as JSON
Parameters: {"id"=>"14"}
Ingredient Load (0.4ms) SELECT "ingredients".* FROM "ingredients" WHERE (14) LIMIT 1
#<Ingredient id: 13, name: "Tomato", category: "Vegetable", created_at: "2013-11-20 04:35:36", updated_at: "2013-11-20 05:59:34">
Completed 200 OK in 18ms (Views: 0.2ms | ActiveRecord: 0.6ms)
数据库中只有两个项目,#13(番茄)和#14(鸡蛋)。
我正在使用:
powder restart
之后继续!)我不知道这可能是什么?任何猜测?!
只是我是个白痴。看看我的坏控制器操作代码:
def show
@resource = @class.find_by(params[:id])
respond_with @resource
end
当然,这应该是:
def show
@resource = @class.find(params[:id])
respond_with @resource
end
谢谢!
答案 0 :(得分:2)
是的,你的生成SQL是错误的。生成的查询是:
SELECT "ingredients".* FROM "ingredients" WHERE (14) LIMIT 1
应该是:
SELECT "ingredients".* FROM "ingredients" WHERE id = 14 LIMIT 1
由于第一个where子句中的条件总是计算为true,因此它会随机选取1行。获取哪一行取决于DBMS如何在内部存储数据。
要知道生成的查询错误的原因,我们需要在Controller的操作中查看代码。