[英]Rails: How to run `rails generate scaffold` when the model already exists?
我是 Rails 的新手,所以我當前的項目處於一種奇怪的狀態。
我生成的第一件事是“電影”模型。 然后我開始更詳細地定義它,添加一些方法等。
我現在意識到我應該用rails generate scaffold
生成它來連接路由、視圖、控制器等。
我嘗試生成腳手架,但收到錯誤消息,指出已存在同名的遷移文件。
現在為我的“電影”創建腳手架的最佳方式是什么? (使用導軌 3)
TL;DR : rails g scaffold_controller <name>
即使您已經有了一個模型,您仍然可以使用rails generate
選項生成必要的控制器和遷移文件。 如果您運行rails generate -h
您可以看到所有可用的選項。
Rails:
controller
generator
helper
integration_test
mailer
migration
model
observer
performance_test
plugin
resource
scaffold
scaffold_controller
session_migration
stylesheets
如果您想為模型生成控制器腳手架,請參閱scaffold_controller
。 為了清楚起見,這里是關於它的描述:
存根腳手架控制器及其視圖。 傳遞模型名稱,CamelCased 或 under_scored,以及作為參數的視圖列表。 控制器名稱被檢索為模型名稱的復數形式。
要在模塊內創建控制器,請將模型名稱指定為類似“parent_module/controller_name”的路徑。
這會在 app/controllers 中生成一個控制器類並調用助手、模板引擎和測試框架生成器。
要創建您的資源,您將使用resource
生成器,而要創建遷移,您還可以看到migration
生成器(看,所有這些瘋狂都有一個模式)。 這些提供了創建丟失文件以構建資源的選項。 或者,您可以使用--skip
選項運行rails generate scaffold
以跳過任何存在的文件:)
我建議花一些時間查看生成器內部的選項。 我覺得它們在書籍等中沒有得到很好的記錄,但它們非常方便。
Lee Jarvis
回答很好,這只是命令,例如; 我們已經有一個名為 User 的現有模型:
rails g scaffold_controller User
對於使用現有數據庫啟動 rails 應用程序的人,有一個很酷的 gem,稱為schema_to_scaffold
來生成腳手架腳本。 它輸出:
rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
從您的schema.rb
我們您重命名的schema.rb.
核實
在Rails 5 中,您仍然可以運行
$rails generate scaffold movie --skip
創建所有丟失的腳手架文件或
rails generate scaffold_controller Movie
僅創建控制器和視圖。
如需更好的解釋,請查看Rails 腳手架
這個命令應該可以解決問題:
$ rails g scaffold movie --skip
可以使用scaffold_controller
記得傳遞模型的attributes
,否則會生成沒有屬性的腳手架。
rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string
此命令將生成以下文件:
create app/controllers/users_controller.rb
invoke haml
create app/views/users
create app/views/users/index.html.haml
create app/views/users/edit.html.haml
create app/views/users/show.html.haml
create app/views/users/new.html.haml
create app/views/users/_form.html.haml
invoke test_unit
create test/controllers/users_controller_test.rb
invoke helper
create app/helpers/users_helper.rb
invoke test_unit
invoke jbuilder
create app/views/users/index.json.jbuilder
create app/views/users/show.json.jbuilder
我在Ubuntu 20.04 中處理Rails 6 API 應用程序時遇到了這個挑戰。
我已經有模型,我需要為模型生成相應的控制器,並在控制器 params 中添加它們允許的屬性。
這是我如何做到的:
我使用rails generate scaffold_controller
來完成它。
我只是運行了以下命令:
rails generate scaffold_controller School name:string logo:json motto:text address:text
rails generate scaffold_controller Program name:string logo:json school:references
這為模型生成了相應的控制器,並在控制器參數中添加了它們允許的屬性,包括外鍵屬性。
create app/controllers/schools_controller.rb
invoke test_unit
create test/controllers/schools_controller_test.rb
create app/controllers/programs_controller.rb
invoke test_unit
create test/controllers/programs_controller_test.rb
就這樣。
我希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.