如何禁用rails中生成的模型的puralization?

Dou*_*oug 3 ruby-on-rails

有一个配置文件config/initializers/inflections.rb,根据这个问题,你可以修改某些项目的puralization:ruby on rails multipleization help?

但是,我对此并不感兴趣.我想关闭生成的模型名称的自动修改.

这是一个例子:

rails generate scaffold UserData data1:string data2:string
Run Code Online (Sandbox Code Playgroud)

数据更改为"基准":

%] cat app/models/user_datum.rb 
class UserDatum < ActiveRecord::Base
  attr_accessible :data1, :data2
end
Run Code Online (Sandbox Code Playgroud)

这是不受欢迎的行为.

我该如何关闭它?

特别是如果你能取悦; 我已经看到一些线索,人们说'你将不得不修改配方',但没有实际指导这样做.

(我很欣赏人们会想要开始回答这个问题,'你应该坚持做事的方式,这是有充分理由的,从长远来看它会发挥作用';请不要)

Dav*_*ton 5

首先,UserDatum 单数.

在任何情况下:

改变你的config/initializers/inflections.rb:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w(UserData)
end
Run Code Online (Sandbox Code Playgroud)

(使用您使用的任何命名约定,例如,如果您使用下划线user_data,或者两者都使用.)

如果你想删除所有复数(粗略:这将影响世界上的一切):

ActiveSupport::Inflector.inflections do |inflect|
  inflect.clear
  inflect.singular(/$/i, '')
end
Run Code Online (Sandbox Code Playgroud)

如果要控制模型/模型文件命名,请修补ModelGenerator:

module Rails
  module Generators
    class ModelGenerator
      def plural_name; singular_name; end
      def plural_file_name; file_name; end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)