Rails模型无法与数据库正确同步

时间:2013-03-02 17:11:37

标签: mysql ruby-on-rails

我有一个名为Merchant的导轨模型,其属性为nameid。我遇到一个问题,即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的商家?

2 个答案:

答案 0 :(得分:0)

这个Merchant.where(:id=>550).first.name的输出应该是什么?您可能创建了一个商家,但您没有定义名称,因此它获得了默认值nil

答案 1 :(得分:0)

为什么你选择一条记录呢?第一次?

Merchant.find(550).name

应该给你你的记录。

尝试

Merchant.first.name

获取模型的第一条记录。