Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails/ActiveRecord模型。Find返回错误的记录_Ruby On Rails_Ruby_Sqlite_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails/ActiveRecord模型。Find返回错误的记录

Ruby on rails Rails/ActiveRecord模型。Find返回错误的记录,ruby-on-rails,ruby,sqlite,activerecord,ruby-on-rails-4,Ruby On Rails,Ruby,Sqlite,Activerecord,Ruby On Rails 4,这是最古怪的 当我访问时: /ingredients/14.json 我明白了 在日志中: 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

这是最古怪的

当我访问时:

/ingredients/14.json
我明白了

在日志中:

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)
当然,这应该是:

  def show
    @resource = @class.find(params[:id])
    respond_with @resource
  end

谢谢大家!

是的,您的生成SQL错误。生成的查询是:

SELECT "ingredients".* FROM "ingredients" WHERE (14) LIMIT 1
鉴于本应:

SELECT "ingredients".* FROM "ingredients" WHERE id = 14 LIMIT 1
由于第一个where子句中的条件的计算结果始终为true,因此它随机选取1行。拾取哪一行取决于DBMS内部存储数据的方式


要知道为什么生成的查询是错误的,我们需要查看控制器操作中的代码。

升级到Rails 4.0.1没有帮助:(在某个时候发生在我们所有人身上!我得到接受投票吗?;)当然,这只会让我再等两分钟。。。
SELECT "ingredients".* FROM "ingredients" WHERE (14) LIMIT 1
SELECT "ingredients".* FROM "ingredients" WHERE id = 14 LIMIT 1