Col*_*ern 110 ruby migration model ruby-on-rails
rails g model Rating user_id:integer message:string value:integer
Run Code Online (Sandbox Code Playgroud)
我怎样才能完全删除这个模型?谢谢
Mik*_*kin 185
bundle exec rake db:rollback
rails destroy model <model_name>
Run Code Online (Sandbox Code Playgroud)
生成模型时,它会创建数据库迁移.如果在该模型上运行"destroy",它将删除迁移文件,但不删除数据库表.所以在跑之前
bundle exec rake db:rollback
Run Code Online (Sandbox Code Playgroud)
fl0*_*00r 49
试试这个
rails destroy model Rating
Run Code Online (Sandbox Code Playgroud)
它将删除模型,迁移,测试和固定装置
小智 28
对于将来的提问者:如果您无法从控制台中删除表,请尝试创建一个为您删除表的迁移.您应该创建一个迁移,然后在文件注释表中删除,如下所示:
class DropTables < ActiveRecord::Migration
def up
drop_table :table_you_dont_want
end
def down
raise ActiveRecord::IrreversibleMigration
end
end
Run Code Online (Sandbox Code Playgroud)
小智 17
删除迁移(如果已迁移迁移)
rake db:migrate:down VERSION="20130417185845" #Your migration version
Run Code Online (Sandbox Code Playgroud)删除模型
rails d model name #name => Your model name
Run Code Online (Sandbox Code Playgroud)这是 Jenny Lang 答案的不同实现,适用于 Rails 5。
首先创建迁移文件:
bundle exec be rails g migration DropEpisodes
Run Code Online (Sandbox Code Playgroud)
然后按如下方式填充迁移文件:
class DropEpisodes < ActiveRecord::Migration[5.1]
def change
drop_table :episodes
end
end
Run Code Online (Sandbox Code Playgroud)
运行rails db:migrate
会删除表。如果运行rails db:rollback
,Rails 会抛出ActiveRecord::IrreversibleMigration
错误。