【问题标题】:rails uninitialized constant Class::News (NameError)rails 未初始化的常量 Class::News (NameError)
【发布时间】:2020-01-18 12:55:04
【问题描述】:

我在带有模型关联的 Rails 中有一个奇怪的错误。

有一个名为“Book”的表,它有许多“新闻”(表“New”)。但是,当我在模型中添加关联时,出现以下错误:

rails 未初始化的常量 Book::News (NameError)

图书型号:

class Book < ApplicationRecord
  belongs_to :editor
  belongs_to :author, optional: false
  has_many :news, dependent: :destroy
end

新模型:

class New < ApplicationRecord
  belongs_to :book
end

我想知道“new”这个名称是否对 Rails 中的命名约定有问题?

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    是的New 一个非常糟糕的命名选择。主要是因为它的语法不正确。

    新闻 名词,
    复数形式但结构单数,通常是定语
    - https://www.merriam-webster.com/dictionary/news

    news的单数和复数形式都是newsNew 实际上是一个形容词,您的模型名称应该始终是名词(或复合名词),因为它们是应用程序业务逻辑中事物的表示。在查找常量时,Rails 实际上正确地改变了这一点,这解释了为什么你得到uninitialized constant Book::News

    只需将您的类和文件的名称更改为正确的形式(news.rbNews),如果您不确定复数形式或拼写,请使用字典,因为它会在约定中为您节省大量的 greif像rails这样的驱动框架。

    【讨论】:

    • 就是这样,谢谢解释,下次我会注意英语语法的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2017-07-10
    • 2022-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多