首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails引擎教程警告(配置引擎)

Rails引擎教程警告(配置引擎)
EN

Stack Overflow用户
提问于 2021-06-26 04:56:54
回答 1查看 37关注 0票数 1

在RailsGuides 第4.4节配置引擎上,给出了以下警告声明:

这里非常重要的是使用类的字符串版本,而不是类本身。如果要使用该类,Rails将尝试加载该类,然后引用相关表。如果表还不存在,这可能会导致问题。因此,应该使用字符串,然后在引擎中使用Constan阵将其转换为类。

也就是说,在初始化器中,正确的方式是声明Blorgh.author_class = "User"Blorgh.author_class = User是错误的。

我不明白指南对不存在的表意味着什么(我假设它是用户表)。如果在初始化应用程序时用户表不存在,那么在运行所有初始化之后,它也将不存在。

此外,既然我们只是向引擎提供ActiveRecord模型类,为什么需要引用表/执行数据库查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-27 21:57:36

Rails在实例化ActiveRecord类时检查表结构,因此该表必须在这一点上存在。添加模型的引擎需要运行数据库迁移,因此如果在初始化器中引用ActiveRecord模型,则在引用类没有表的地方有一个点后安装。

db:migrate任务加载Rails (因此运行初始化程序),因此您最终会遇到一个鸡和蛋问题,您无法添加新的表,因为Rails试图加载类,而且没有表。因此,最好将类设置为字符串,然后在运行时使用constantize实例化类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68139357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档