【问题标题】:rails linked tables "uninitialized constant" errorrails 链接表“未初始化的常量”错误
【发布时间】: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 食谱 架构迁移 用户会话 用户

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的,这是与模型Recipes以及RecipeUsers中的命名约定有关的问题。因为rails为模型提供单数命名约定,为控制器提供复数命名。
    • 模型名称应始终为单数,因为模型的一个对象指的是单个记录。否则人们会开始使用 PostsUsers 等名称作为模型,而它们应该是 PostUser
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多