2

已經存在,我試圖創建一個名爲Message新支架,並得到該錯誤消息:嘗試創建一個支架,但遷移的Rails

Another migration is already named create_messages 

我能更改我的模型/控制器的名稱做一邊/ views(我不想這樣做)?

這是發生的原因是我有一個名爲Message的前腳手架,我改變了一個不同的名稱(運行遷移來做到這一點與搜索和替換所有文件名和變量/類名稱)。我明白爲什麼我會收到此錯誤消息,只想知道如何前進。

回答

0

快速修復是重命名舊遷移(create_messages)並嘗試再次生成腳手架。

但推薦使用單一的create_messages遷移,以便通過銷燬scaffold命令來安全刪除它。

更新:

如果已經有消息模型,然後生成信息腳手架沒有意義的,因爲支架與像產生控制器的其他作品再次做同樣的事情,路線等

+0

我想要**完整**腳手架的'消息'。我**使用**有一個不同的'消息',我完​​全重命名(表,模型,視圖,控制器,引用等)。重命名遷移文件是否安全? –

+0

如果您已將其他文件重命名,那麼您也可以重新命名遷移,但重命名遷移並不是一個好主意,這對於多個環境可能會很麻煩。 –

+0

不要忘記在舊遷移腳本中重命名該類。否則,在「rake db:create:all」之後執行「rake db:migrate」時會出現「NameError:uninitialized constant」錯誤。 – user1175969

0

如果你已經有一個遷移所謂的create_messages你可能已經有一個消息模型(這意味着你不能讓另一個命名相同)。如果您現在已決定要在模型上使用腳手架來獲取額外的控制器和視圖代碼,請使用以下名稱,其中name是該列的名稱。

rails g scaffold Message name --skip

+0

我更新了這個問題,以表明我**使用**來建立一個名爲'Message'的腳手架,我完全重命名。這個'--skip'在這種情況下工作嗎? –

+0

如果您已經有消息模型,我的解決方案就是這樣。既然你在最好的選擇之前重新命名了所有的東西,就是去做上面所說的。重命名遷移,然後在新的'Message'模型上執行一個普通的腳手架。如果你已經運行了'rails g model'並且現在意識到你想爲它使用腳手架,' - skip'就可以工作。讚賞會很感激,所以我可以發表評論。 –