簡體   English   中英

Rails:當模型已經存在時如何運行`rails generate scaffold`?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM