vir*_*rni 6 rake ruby-on-rails rake-task ruby-on-rails-3.2
在终端上,是否有一个rake任务列出已在特定模型上运行的所有迁移?如果没有,我该怎么做?
当我跑rake -T,rake db:migrate:status似乎是正确的答案,但它给了我迁移名称作为其中一个列.虽然名称Add logo to company确实表明了公司模型,但并非所有迁移都有这样明确的名称.一个很好的例子Change data type for content.我有400多个迁移文件,所以这个功能真的很有帮助.
所以,理想的输出是:
database: abcd_development
Status Migration ID Migration Name Model Name
----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
谢谢!
MrT*_*rus 11
如果你已经在迁移命名约定坚持,你可以只通过输出rake db:migrate:status通过grep:
rake db:migrate:status | grep 'compan'
Run Code Online (Sandbox Code Playgroud)
但这并不完美 - 迁移名称不需要与他们实际做的事情有任何关系 - 迁移可能会将列"名称"添加到"公司"表并被命名EvacuateWeaselTubes并仍然运行得很好.
如果您想构建一个可以解决此问题的任务,则必须解析每个迁移文件以查看其更改内容.由于有许多方法可以指定迁移中的更改(例如add_column,create_table块或调用execute('CREATE whatever')),您可能希望搜索提及的内容Model.table_name,然后检查schema_migrations表以查看它是否已运行.
| 归档时间: |
|
| 查看次数: |
9896 次 |
| 最近记录: |