Ruby on rails where子句找不到正确的记录

时间:2018-04-24 10:41:25

标签: mysql ruby-on-rails ruby activerecord dump

我有一个这样设置的rails模型:

POI:

id : int
name : varchar
subtype : int

我最近使用mysql_dump和import将大量记录从一个数据库迁移到另一个数据库。迁移似乎进展顺利,如果我在控制台中查询id,它会找到记录。有这样的记录:

id : 33
name : testpoi
subtype : 172

如果我尝试使用以下方法找到它:

Poi.where(:subtype => 172).first

它总是返回nil

如果我在我迁移数据库的系统上运行这个确切的查询,它确实可以工作。

如果我运行Poi.find(33),它也会找到它。我试过了

Poi.where(:subtype => "172").first 

同时确保它不是数据类型不匹配,但无济于事。

另外,如果我将此对象添加到集合

@otherobject.poilist << Poi.find(33) #=> which has a has many with foreign key subtype

它工作正常(保存后返回true),但是如果我然后重新启动生产控制台,则关联不再存在,即使子类型id与包含对象的id匹配。

1 个答案:

答案 0 :(得分:0)

谢谢各位回复。事实证明,由于一些时髦的迁移,子类型字段确实是一个字符串。这里真正的奇迹是,在某些情况下它可以工作,因为它不应该有。案件结案!