首页 > 解决方案 > 在 Ruby on Rails 中,“Message”类存储在哪里?

问题描述

我试图理解 Ruby On Rails Codecademy 课程中术语的语法和含义。似乎有一个“消息”类是默认类(我尚未定义的类)。

(编辑:原来 Message 不是默认类。它是在 ~/app/models/ 中定义的,我不知道。它是在我输入命令时创建的: rails generate model Message。任何读者都可能忽略我剩下的问题,因为它变得无关紧要。)

例如,在 Messages Controller 中定义了以下方法:

~app/controllers/messages_controller
def new 
@message = Message.new 
end

我理解上面指示创建一个新的实例变量:类的“@message”:“Message”。在我们这样做之前,我们通常必须事先创建一个类“Message”,但我不记得曾经这样做过,这表明 Message 是一个默认类。

所以我的问题是,“消息”类在哪里定义,这些默认操作“新”、“全部”等来自哪里?

我在我的 rails 文件中搜索了“消息”并发现了以下内容:

~app/node_modules/@rails/activestorage/README.md:
   64  
   65  ```ruby
   66: class Message < ApplicationRecord
   67    has_many_attached :images
   68  end

这表明 Message 类继承自 ApplicationRecord 超类。我已经进行了搜索,并且有很多名为“active_record.rb”的文件。这提出了进一步的问题。Ruby 如何知道要引用哪个“active_record.rb”文件?

“active_record.rb”文件之一保存在这里:

~app/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.0.rc1/lib/active_record.rb

标签: ruby-on-railsrubyclassmessage

解决方案


它在您的模型文件夹中,它不是基类。这些方法、这些类、文件等可能是使用scaffold命令创建的。如果您根本没有使用此命令,请尝试创建一个新项目并在终端中键入rails g scaffold Message content:string并检查日志,以便您了解正在发生的事情。如果您对此感到好奇,这里有更多scaffold 信息

此外,ActiveRecordRails 是默认 ORM(这就是您的模型将从它继承的原因)。您可以在本指南中查看有关它的更多信息。


推荐阅读