代码之家  ›  专栏  ›  技术社区  ›  Nils Kuijpers

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

  •  0
  • Nils Kuijpers  · 技术社区  · 6 年前

    我有一个rails模型,其设置如下:

    Poi:

    id : int
    name : varchar
    subtype : int
    

    我最近使用mysql\u dump和import将大量记录从一个数据库迁移到另一个数据库。迁移似乎进行得很顺利,如果我在控制台中查询id,它会发现记录。有这样一个记录:

    id : 33
    name : testpoi
    subtype : 172
    

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

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

    它总是返回零

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

    如果我跑步 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 回复  |  直到 6 年前
        1
  •  0
  •   Nils Kuijpers    6 年前

    感谢各位的回复。事实证明,由于一些奇怪的迁移,子类型字段实际上是一个字符串。这里真正的奇迹是,在某些情况下它确实起了作用,因为它不应该起作用。案件已结案!