当我跑步时
rails generate scaffold HighScores
我得到一个名为" high_scores"的移植,一个名为" high_score"的模型,一个名为" high_scores"的视图,以及一个名为的控制器" high_scores" (其中包括" @ high_scores"," @ high_score"和" HighScore")
为何会出现这种差异?
答案 0 :(得分:2)
按惯例,模型是单数的,因为它表示像Post,User等单个对象..但数据库表名是复数,因为它们代表对象的集合。
在您的案例中,模型名称为HighScore
,rails将在文件class HighScore < ActiveRecord::Base
中查找类定义high_score.rb
。您可以在课程中执行所有验证和模型相关任务。
控制器是复数,因为它代表模型对象。尽管为控制器使用多个名称只是一种惯例。例如,用户控制器将表示来自用户模型的对象。
在您的情况下,scaffold将生成一个控制器HighScores
,rails将在文件class HighScoresController < ApplicationController
high_scores_controller.rb
在您的控制器中,您可以找到一些宁静的操作,例如index
,show
,edit
,update
,destroy
。索引操作的目的是列出所有高分,以便定义一个实例变量@highscores,它将存储数据库表中的所有高分,如 @high_scores = HighScore.all
,然后传递给索引视图。同样,show动作的目的是显示单个高分。在您的show动作中,您可以定义一个实例变量 @highscore
,它将存储一个特定的高分形式数据库表格,如 @high_score = HighScore.find(params[:id])
,十个传递给它以显示视图。
答案 1 :(得分:1)
为了解释你的问题,我举了一个如下例子:
rails generate scaffold User name:string email:string
我们使用单数名称User
而不是Users
,因为脚手架的名称遵循模型的惯例,这些模型是单数的,而不是资源和控制器,它们是复数。
我认为这个答案对你有帮助。