ruby-on-rails - Ruby on Rails 外壳 : Why Use Caps Here?

标签 ruby-on-rails ruby model-view-controller controller

Rails 新手问题...

考虑以下代码:

class ArticlesController < ApplicationController
  def new
  end
  def create
    @article = Article.new(article_params)
    @article.save
    redirect_to @article
[...]

我不明白为什么Article.new 中的A 必须大写。所有其他对文章的引用都是小写的。为什么在这种情况下会有所不同?

最佳答案

因为模型 Article 是类。 class(s) 在 Ruby 中是常量。您正在创建模型(类)Article 的实例,然后将该实例保存到数据库中。

在 Ruby 中, 是常量,但是匿名 类或模块不需要总是需要是常量。如果需要,您可以将匿名类分配给常量。

Class::new

Creates a new anonymous (unnamed) class with the given superclass (or Object if no parameter is given). You can give a class a name by assigning the class object to a constant.

曾经,您将它分配给一个常量,它现在不是一个匿名类,因为它有名称。

klass = Class.new
klass.name # => nil

Klass = klass
Klass.name # => "Klass"

同样代表Module::new .

因为你在使用 Rails,所以你应该看看这个 2.1 Naming Conventions .

By default, Active Record uses some naming conventions to find out how the mapping between models and database tables should be created. Rails will pluralize your class names to find the respective database table. So, for a class Book, you should have a database table called books........

关于ruby-on-rails - Ruby on Rails 外壳 : Why Use Caps Here?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24051012/

相关文章:

mysql - Rails 部署 - 数据库未上传

Ruby Mechanize 带有标题的帖子

jquery - 为什么 ruby​​ on rails 返回 null 而不是 json 对象

javascript - JQuery DataTable 和 JsonDate,非常基础

html - 在局部 View 中将两列并排放置

ruby-on-rails - 链接数据方法设置为删除但错误引用 get 没有路由匹配 [GET]

ruby-on-rails - ruby 中空白行的正确缩进?

ruby-on-rails - 如何使用 RMagick 和 Ruby 将 PDF 文件转换为图像

ruby - 将文件中的内容与正则表达式匹配?

ios - 在Swift中如何获取监听分段控件的按钮?