7

因此,我正在开发一个新项目,这似乎是使用新引擎功能的绝佳选择。正如引擎所说,它有自己的小应用程序,有自己的视图、控制器和模型。这就是我的不足之处。

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

rails new engine_app && cd engine_app

然后我创建新引擎

rails plugin new my_engine --mountable

然后我将“gem”添加到 engine_app 的 gemfile

gem 'my_engine', :path => './my_engine'

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

mount MyEngine::Engine, :at => '/my_engine'

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

rails generate model MyModel title:string body:text

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

其次,我如何运行此迁移,迁移文件是否仅在调用表时正确:my_model?我尝试运行以下命令,但似乎没有任何反应,并且我检查了数据库并且表不存在。

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

感谢您的任何帮助和指导。

4

2 回答 2

5

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

rake my_engine:install:migrations; rake db:migrate

运行迁移

于 2012-10-04T01:25:56.503 回答
0

您可以将生成器与引擎目标一起使用:

bin/engem ENGINE_NAME rails g GENERATOR
于 2021-01-12T12:59:29.487 回答