當我運行如何/爲什麼rails決定使用複數或單數命名約定命名一些文件?
rails generate scaffold HighScores
我得到一個則名爲「high_scores」遷移,一個名爲「high_score」的模式,一個名爲「high_scores」的觀點,並命名爲「high_scores」(內這兩者都是「控制器@ high_scores「,」high_score「和」HighScore「)
爲什麼這樣的差異?
當我運行如何/爲什麼rails決定使用複數或單數命名約定命名一些文件?
rails generate scaffold HighScores
我得到一個則名爲「high_scores」遷移,一個名爲「high_score」的模式,一個名爲「high_scores」的觀點,並命名爲「high_scores」(內這兩者都是「控制器@ high_scores「,」high_score「和」HighScore「)
爲什麼這樣的差異?
按照慣例模型是奇異的,因爲它代表像一個帖子,用戶等的單個對象..但數據庫表名是複數,因爲它們代表對象的集合。
在您的案例中,型號名稱爲HighScore
,導軌將在文件high_score.rb
內尋找類定義class HighScore < ActiveRecord::Base
。您可以在課堂內執行所有驗證和模型相關任務。
控制器是複數,因爲它表示模型對象。儘管對控制器使用複數名稱只是一種慣例。例如用戶控制器將代表來自用戶模型的對象。
你的情況,上面的腳手架會生成一個控制器HighScores
和軌道將尋找類定義class HighScoresController < ApplicationController
文件high_scores_controller.rb
裏面在你的控制器,你可以找到一些寧靜的操作,如index
,show
,edit
,update
,destroy
。索引操作的目的是列出所有高分,因此您可以定義一個實例變量@highscores,它將存儲數據庫表中的所有高分,如@high_scores = HighScore.all
,然後將其傳遞給索引視圖。同樣,show動作的目的是顯示一個高分。在您的show動作中,您可以定義一個實例變量@highscore
,它將存儲特定的高分形式db表,如@high_score = HighScore.find(params[:id])
,並將其傳遞給顯示視圖。
爲了解釋你的問題,我考慮像下面的一個例子:
rails generate scaffold User name:string email:string
我們使用單數名User
,而不是Users
因爲支架的名字如下機型的慣例,這是獨特的,而不是資源和控制器,這是複數。
我認爲這個回答對你有幫助。