rails 链接表“未初始化的常量”错误

Posted

技术标签:

【中文标题】rails 链接表“未初始化的常量”错误【英文标题】:rails linked tables "uninitialized constant" error 【发布时间】:2011-04-14 20:05:27 【问题描述】:

在学习 RoR 的同时,我正在构建一个我认为相当简单的食谱应用程序。

我有一个用户表,一个食谱表,以及一个用户保存食谱列表的 recipe_users 表。

我从 rails 得到的错误是“未初始化的常量 User::RecipeUser”

我的模型如下

类用户 :recipe_users 结尾 类食谱 :destroy has_many :recipe_users has_many :users, :through => :recipe_users 结尾 类 RecipeUsers

现在在我的用户控制器中,我正在尝试调用

@user = User.find(current_user.id) @userRecipes = @user.recipes.find()

查看我的 mysql Show Tables,我明白了

recipe_users 食谱 架构迁移 用户会话 用户

据我所知,我的命名约定是正确的。

关于我为什么会收到此错误的任何建议?

【问题讨论】:

【参考方案1】:

看起来这是命名约定的问题。

我删除了对 recipe_users 的所有引用,并将表、模型和控制器重新创建为餐点。

不是一个好名字,但一切顺利。

我从不喜欢 rails 似乎期望的命名约定,我认为部分是由于复数形式,而没有实际告知开发人员 rails 可能期望什么名称。

【讨论】:

是的,这是与模型Recipes以及RecipeUsers中的命名约定有关的问题。因为rails为模型提供单数命名约定,为控制器提供复数命名。 模型名称应始终为单数,因为模型的一个对象指的是单个记录。否则人们会开始使用 PostsUsers 等名称作为模型,而它们应该是 PostUser

以上是关于rails 链接表“未初始化的常量”错误的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上未初始化的常量 Sprockets::SassCacheStore 错误(学习 ruby​​ on rails 书)

运行规范命令时未初始化的常量 Spec::Rails (NameError)

Rails webrick 强制退出:未初始化的常量 WebConsole::Railtie::Middleware (NameError)

未初始化的常量 Faker::Date 更新到 rails 5.1

尝试在Rails中设置rspec测试时获取未初始化的常量Faker :: String

Rails:NameError:未初始化的常量