ruby-on-rails - 即使有要返回的记录,Rails find 也会返回 nil

标签 ruby-on-rails sqlite

我正在做一个 RoR 项目(RoR 3.1 和 Ruby 1.9.2p290),我遇到了一些严重的 即使我知道应该找到东西,查询也找不到东西的奇怪问题 .

为简单起见,假设有一个 Car具有 color 的模型属性。我在数据库中有几条记录,都是黑色的。获取所有记录并在 View 中显示它们工作正常,我一点也不觉得奇怪。

@cars = Car.all

这是我得到第一辆车并检查颜色是否等于黑色的控制台:
ruby-1.9.2-p290 :022 > Car.first.color == "Black"
  Car Load (0.2ms)  SELECT "cars".* FROM "cars" LIMIT 1
 => true 

如您所见,这很好用。现在,如果我尝试使用 find_by_color 进行查询它返回 nil !那不应该。
ruby-1.9.2-p290 :021 > Car.find_by_color("Black")
  Car Load (0.3ms)  SELECT "cars".* FROM "cars" WHERE "cars"."color" = 'Black' LIMIT 1
 => nil 

我检查颜色的任何类型的查询也是如此,例如
find(:all, :conditions => { :color => "Black" })

我已经尝试了所有可以尝试的方法,但目前我不知道是什么导致了这样的事情。

知道这可能是什么或从哪里开始寻找吗?

我很感谢在我发疯之前解决这个问题的任何帮助;)

编辑

颜色来自我通过文件上传导入的 CSV 文件并将其解析为 Car 记录。可能有什么编码或类似的东西吗?如果有帮助,我也会在开发中使用 SQLite。

更新

我尝试了另一个有效的查询!
Car.where('color like ?', "Black")

这将返回所有记录。很奇怪。这些查询之间可能有什么区别?

最佳答案

问题是编码,当我添加

value.encode('utf-8')

对于我导入的 CSV 文件的每个字段,我都在数据库中得到了正确的值。

编码问题似乎对查询的影响不同。

关于ruby-on-rails - 即使有要返回的记录,Rails find 也会返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915635/

相关文章:

ruby-on-rails - 为什么 Rails 不将选择查询包装到开始提交中

sql - 将sql结果转换为ActiveRecord关系

javascript - sqlite ios 手机间隙中的选择查询出现问题?

java - 我需要帮助将图像存储在内部目录中,并且其路径已插入SQLite中

ruby-on-rails - Rails - 带有 format.js 的 Rspec 3 Controller 操作

ruby-on-rails - 无法将 "User"数据模型添加到数据库

ruby-on-rails - capybara NoMethodError : undefined method `visit' for

java - sql根据日期删除

sqlite - SQLite如果一个结果为空,如何选择另一行

javascript - 从 JavaScript 对本地 SQLite 文件运行查询