生成引擎的模型和迁移

kwb*_*ock 5 ruby ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3.2

所以我正在开发一个新项目,它似乎是使用新引擎功能的绝佳选择.正如引擎所说,它自己的小应用程序,具有自己的视图和控制器和模型.这是我即将到来的地方.

我创建了我的测试应用程序,我将在其中安装新引擎.

rails new engine_app && cd engine_app
Run Code Online (Sandbox Code Playgroud)

然后我创建了新引擎

rails plugin new my_engine --mountable
Run Code Online (Sandbox Code Playgroud)

然后我将'gem'添加到engine_app的gemfile中

gem 'my_engine', :path => './my_engine'
Run Code Online (Sandbox Code Playgroud)

然后我将引擎安装在engine_app的路由中

mount MyEngine::Engine, :at => '/my_engine'
Run Code Online (Sandbox Code Playgroud)

然后我进入my_engine的虚拟应用程序并运行

rails generate model MyModel title:string body:text
Run Code Online (Sandbox Code Playgroud)

这是我遇到困惑的地方.根据我的理解,这应该生成一个命名空间表(我认为它将是my_engine_my_model).迁移文件中的表只是my_model.

其次,如何运行此迁移,并且仅在调用表时迁移文件是否正确:my_model?我试过运行以下但似乎没有发生任何事情,我已经检查了数据库,表格不存在.

回顾一下,我需要知道如何在引擎中创建迁移,并且能够正确地在父应用数据库上运行它们.

感谢您的帮助和指导.

kwb*_*ock 5

因此,我阅读的所有教程都没有指定您需要在引擎的根级别内运行 script/rails generate。我一直看到参考资料告诉我转到测试/虚拟应用程序。在从我的引擎的根运行脚本/rails 生成模型 [字段] 后,它创建了适当的模型、迁移 rake 任务并且我能够运行

rake my_engine:install:migrations; rake db:migrate
Run Code Online (Sandbox Code Playgroud)

运行迁移