【问题标题】:Generating models and migrations for an engine为引擎生成模型和迁移
【发布时间】:2012-09-24 23:56:11
【问题描述】:

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

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

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?我已尝试运行以下命令,但似乎没有任何反应,并且我检查了数据库并且表不存在。

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

感谢您的帮助和指导。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3.2 ruby-on-rails-plugins


    【解决方案1】:

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

    rake my_engine:install:migrations; rake db:migrate
    

    运行迁移

    【讨论】:

      【解决方案2】:

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

      bin/engem ENGINE_NAME rails g GENERATOR
      

      【讨论】:

        猜你喜欢
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-03
        • 2017-01-16
        • 1970-01-01
        • 2020-02-01
        相关资源
        最近更新 更多