代码之家  ›  专栏  ›  技术社区  ›  Paul Verschoor

活动记录是否存在Model.table_?没有给出正确的结果

  •  1
  • Paul Verschoor  · 技术社区  · 8 年前

    在rails控制台中创建实际的数据库表时, User.table_exists? 没有给我正确的结果。 ActiveRecord::Base.connection.tables 它表明表存在。我必须离开 rails console 然后再回去 给我正确的值。有什么缓存吗?Rails5.2.1中的一个bug?还是我遗漏了什么?

    要复制的代码:

    rails generate model User name:string
    rails console
    

    轨道控制台

    User.table_exists?                                =>  false  
    ActiveRecord::Base.connection.tables              =>  []
    ActiveRecord::Migration[5.2].create_table :users  => 
        -- create_table(:users)
        (0.1ms)  SELECT sqlite_version(*)
        (1.5ms)  CREATE TABLE "users" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL)
    ActiveRecord::Base.connection.tables             => ["users"]
    User.table_exists?                               => false
    exit
    

    在里面 终端/bash

    rails console
    

    在里面 轨道控制台

    User.table_exists?                               => true
    

    使用:
    红宝石2.5.0
    轨道5.2.1

    2 回复  |  直到 8 年前
        2
  •  0
  •   arieljuod    8 年前

    我想这是一个缓存的东西。我不知道是否有bug,我对rails的内部知识不多,但我认为这是通过设计实现的。从控制台中创建表甚至不是常见的用例。

    您可以跳过“退出”>“进入步骤”调用 reload! 在控制台上重新加载所有内容。