我用
创建了一个引擎rails plugin new myengine --mountable
搜索'变形'在项目文件夹中,我找到了 /test/dummy/config/initializers/inflections.rb 档案
在这个文件中我把
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular 'singular_model', 'plural_model'
end
当我尝试使用模型生成器(来自项目根目录)
bin/rails generate model singular_model
然后我用 singular_models 作为表名和迁移名称进行迁移
当我从myengine / test / dummy
运行相同的命令时bin/rails generate model singular_model
我得到了指定的结果: plural_model 作为表名和迁移名称
那么,如何将导流板加载到导轨发生器中?
答案 0 :(得分:1)
您实际上可以在项目_root / config / initializers /中创建一个名为inflections.rb
的文件,并在该文件中编写规则,例如,
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
inflect.irregular 'cloth', 'clothes'
end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
它也适用于引擎。
希望它有所帮助!
答案 1 :(得分:0)
在您的引擎上,您必须将test/dummy/
文件夹视为使用此引擎的应用的根目录。此文件夹仅用于测试目的,不是引擎的设置。
假设您的引擎位于文件夹myengine
,而您的应用位于文件夹myapp
。
1)如果您想要一个自定义变形,它在引擎级别定义,并在引擎和应用程序级别使用。然后必须在:
中定义# myengine/config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular 'singular_model', 'plural_model'
end
是的,您必须在其中创建文件夹initializers
和文件inflections.rb
。此变形对每个使用引擎的应用程序都有效。
2)如果您希望自定义变形仅适用于您的应用,但不适用于使用相同引擎的其他应用。您必须在您的myapp/config/initializers/inflections.rb
使用相同的代码,默认情况下,此文件在Rails应用程序中确实存在。
在最后一种情况下,自定义变形的范围仅为当前应用,就像在test/dummy
文件夹中一样。
根据您需要的行为,您必须放置自定义变形的代码。
答案 2 :(得分:0)
在Rails 4.2中,rails引擎在运行生成器时不会加载初始化程序,本期将讨论这个问题:https://github.com/rails/rails/issues/14472
在my_engine/config/initializers/inflections.rb
中定义变形:
# my_engine/config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'regatta', 'regattas'
end
需要engine.rb
中的变形初始值设定项:
# my_engine/lib/my_engine/engine.rb
require_relative '../../config/initializers/inflections'
module MyEngine
class Engine < ::Rails::Engine
# ...
end
end
按预期使用生成器:bin/rails g model Regatta