如何更改 Rails 脚手架中的默认模型模板?

Posted

技术标签:

【中文标题】如何更改 Rails 脚手架中的默认模型模板?【英文标题】:How do I change the default model template in Rails scaffold? 【发布时间】:2012-03-27 09:44:39 【问题描述】:

如果我想更改 Rails 中脚手架创建的默认控制器模板,这很容易 - 在谷歌搜索之后,我发现我可以在 lib/templates/rails/controller 中放置一个 controller.rb 文件,以便生成器获取而不是默认值。

我找不到任何关于在哪里可以对模型文件执行相同操作的说明。我不想构建一个单独的生成器,我只想:

> rails generate model foo 

根据我制作的 model.rb 模板创建 foo.rb 模型文件。

【问题讨论】:

【参考方案1】:

不确定这是否是个好主意,但您可以在此处找到生成器代码:https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/model/model_generator.rb

module Rails
  module Generators
    class ModelGenerator < NamedBase #metagenerator
      argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
      hook_for :orm, :required => true
    end
  end
end

根据this post,尽管您应该能够将模板放入lib/templates/rails/model,但您可能需要根据to this通过rake任务指定模板的位置

【讨论】:

是的,我确实尝试过,但它似乎没有发现我对 model_generator.rb 文件所做的任何更改......也许我在某处犯了错误,因为这是我的想法如何做到这一点......或者我可能没有正确弄清楚如何让该生成器使用我的模板文件(对于生成器来说仍然很新)。不过,正如您所建议的那样,我将重新审视这个解决方案。 好的...所以我看了一下您引用的内容,链接是 1)构建您自己的生成器并使用它,2)我在原始帖子中提到的内容,即放置其他东西的正确lib文件夹中的文件。所以,两者都没有帮助。问题是我可以做些什么来从模板中提取模型,就像我可以使用控制器和视图模板一样。我看到了生成器代码——我已经在 lib/templates/rails/model 文件夹中有一个用于更改的复制副本——我无法弄清楚可以对此进行哪些更改以使其拉入模板,或者是否有可能.

以上是关于如何更改 Rails 脚手架中的默认模型模板?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 6 脚手架模板位于何处?

如何在 MVC 中自定义脚手架模板并更改 .cs.t4 文件

如何避免 Rails 脚手架将模型放入命名空间

从 t4 脚手架模板访问我的模型中的元数据(数据注释)

现有模型和数据库表的 rails g 脚手架

Ruby on rails,改变最近创建的脚手架