我最近决定更改模型的名称。因此我删除了呼叫rails db:drop
的数据库。
使用高级文本编辑器查找并替换了模型名称,然后将所有相关目录重命名为符合约定;包括迁移文件等。
我删除了架构文件。
我打电话给rails db:create
来创建数据库:没有错误
我打电话给rails db:migrate
来创建表和架构:没有错误。
当我尝试在模型类上调用方法...(“设置”)
> Set.all
NoMethodError: undefined method `all' for Set:Class
from (pry):4:in `<main>'
要进行测试,我运行了rails generate model Set
,并得到了以下内容:
Running via Spring preloader in process 2042
invoke active_record
The name 'Set' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.
所以在这里看来该模型确实存在。但是它在控制台中不存在。
答案 0 :(得分:2)
为什么我的模型无效?
不是。目前尚不清楚您从何处得出此结论。
NoMethodError:Set:Class的未定义方法“ all”
模型名称(Set
)与class from the standard lib相同。由于rails自动加载的工作方式,名称Set解析为stdlib类,而不是模型。用不存在的名称重命名模型(正如警告所提示的那样)。