簡體   English   中英

Ruby on Rails:嘗試生成模型時出錯:名稱已在使用中

[英]Ruby on Rails : Error trying to generate a model : Name already in use

我是 Ruby on Rails 的新手。 我正在嘗試使用命令生成模型

rails 生成模型 電影標題:文本 年份:整數 評分:整數 描述:文本

但我收到錯誤:

 invoke  active_record The name 'Movie' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.

我真的很想保留電影這個名字。 我也嘗試過以下刪除表 - 但該表不存在於數據庫中

sqlite> drop table Movie;
Error: no such table: Movie

我不確定如何修復此錯誤或導致此錯誤的原因。 對此的任何幫助都會很棒。 提前致謝。

您可以通過運行rails destroy model Movie來恢復。 這將刪除之前生成的模型、遷移、測試和夾具。

根據 Rails 約定,表名應該是movies 嘗試:

sqlite> drop table movies;

並確保您沒有模型類(在models/movie.rb )。

案例一:緩存問題

我得到以下錯誤::

The name 'Activityflow' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.

如果您在初始行中看到以下消息,則在運行rails g時。 可能是緩存問題:

warning: previous definition of CALLBACK_CAMPAIGN_NAME was here
Running via Spring preloader in process 98806
      invoke  active_record

解決方案是殺死 spring,它將釋放緩存。

查找spring的進程ID

$ ps -ef | grep spring
501 82388 82384   0  2:21PM ??        66:34.87 spring app    | insurance | started 16 hours ago | development mode      
501 82384     1   0  2:21PM ttys005    0:00.84 spring server | insurance | started 16 hours ago   

殺死進程 例如:82384 在上述情況下

$ kill -9 82384

然后當你再次運行rails g命令時; Spring 將以新內容運行/啟動,並且模型創建成功。

Running via Spring preloader in process 99237
  invoke  active_record
  create    db/migrate/20200518021818_create_activityflows.rb
  create    app/models/activityflow.rb
  invoke    rspec
  create      spec/models/activityflow_spec.rb

案例二:模塊問題

我得到以下錯誤::

The name 'Workflow' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.

問題是我正在使用 gem gem 'workflow', '~> 2.0.2'它創建模塊名稱 Workflow 並且不允許生成名為 Workflow 的模型。

所以,當你使用任何 gem並且任何 gem中的模塊名稱與模型名稱匹配小心

Simple way to check if module name exist is::
$ bin/rails c
[4] pry(main)> Workflow
=> Workflow
[5] pry(main)> Workflow.class
=> Module

希望這對任何面臨類似問題的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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