我有一个名为Merchant
的导轨模型,其属性为name
和id
。我遇到一个问题,即rails和我的数据库对某个商家名称不一致。
这是rails发生的事情:
1.9.2p320 :001 > Merchant.where(:id=>550).count
=> 1
1.9.2p320 :002 > Merchant.where(:id=>550).first.name
=> nil
这就是mysql发生的事情:
mysql> SELECT name FROM merchants WHERE id=550;
+----------+
| name |
+----------+
| Testname |
+----------+
1 row in set (0.00 sec)
根据FlyersAdmin::Application.config.database_configuration[::Rails.env]
,我的第一个代码窗口中rails使用的数据库与第二个窗口中mysql使用的数据库相同。为什么商家的名字是nil
而不是“Testname”是我难以接受的。
值得注意的是,最近我更新了他们使用新数据的数据库,是否可能导致这种差异?也许rails缓存数据,所以还没有查看更新的数据库呢?我很难过,感谢任何帮助。
编辑:
这是另一个增加神秘感的线索:运行Merchant.where(:name => nil)
返回空列表!为什么不选择ID为550的商家?
答案 0 :(得分:0)
这个Merchant.where(:id=>550).first.name
的输出应该是什么?您可能创建了一个商家,但您没有定义名称,因此它获得了默认值nil
答案 1 :(得分:0)
为什么你选择一条记录呢?第一次?
Merchant.find(550).name
应该给你你的记录。
尝试
Merchant.first.name
获取模型的第一条记录。