Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么defined?(ModelName)返回nil?_Ruby On Rails_Activerecord_Defined - Fatal编程技术网

Ruby on rails 为什么defined?(ModelName)返回nil?

Ruby on rails 为什么defined?(ModelName)返回nil?,ruby-on-rails,activerecord,defined,Ruby On Rails,Activerecord,Defined,我在开发模式下运行了rails控制台,并进行了测试,以查看是否定义了模型。结果令人惊讶 > defined?(User) nil > defined?(Object) "constant" > User User(id: integer, email: string, encrypted_password: string, created_at: datetime, updated_at: datetime) > defined?(User) "constant" 在我

我在开发模式下运行了rails控制台,并进行了测试,以查看是否定义了模型。结果令人惊讶

> defined?(User)
nil
> defined?(Object)
"constant"
> User
User(id: integer, email: string, encrypted_password: string, created_at: datetime, updated_at: datetime)
> defined?(User)
"constant"
在我直接引用之前,似乎没有加载
用户
模型。我假设这与自动加载功能有关,这样代码的实时更改就可以反映在应用程序中,而无需重新启动服务器。但是,为了检查模型的现有属性,这并不理想

我检查模型是否存在的原因是为了在迁移中为新列执行某些属性填充。我只想在模型存在的情况下执行填充,因为在将来的某个时候,模型可能不存在,并且在迁移文件已经运行后更改迁移文件被认为是不好的做法


有办法解决这个问题吗?

这个答案将有助于解决您的问题:

<>你可以考虑在迁移之外做你的属性群体。例如,在部署后可以运行的rake任务中。我发现,以这种方式将数据库模式迁移与数据迁移分离可以省去很多麻烦

if (Foo rescue false)
  ...
end