1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

include names in model generator warning message. refs #13515.

This is a follow up to #13515. It includes the name given and
the singularized version in the warning message. This will aide the user
to see wether the detected singular was right or not.
This commit is contained in:
Yves Senn 2014-02-24 09:43:30 +01:00
parent 0e144bebc6
commit 174c9f0df3
2 changed files with 7 additions and 5 deletions

View file

@ -3,21 +3,23 @@ require 'rails/generators/active_model'
module Rails
module Generators
module ModelHelpers # :nodoc:
PLURAL_MODEL_NAME_WARN_MESSAGE = 'Plural version of the model detected, using singularized version. Override with --force-plural or setup custom inflection rules for this noun before running the generator.'
PLURAL_MODEL_NAME_WARN_MESSAGE = "The model name '%s' was recognized as a plural, using the singular '%s'. " \
"Override with --force-plural or setup custom inflection rules for this noun before running the generator."
mattr_accessor :skip_warn
def self.included(base) #:nodoc:
base.class_option :force_plural, type: :boolean, default: false, desc: 'Forces the use of a plural model name'
base.class_option :force_plural, type: :boolean, default: false, desc: 'Forces the use of the given model name'
end
def initialize(args, *_options)
super
if name == name.pluralize && name.singularize != name.pluralize && !options[:force_plural]
singular = name.singularize
unless ModelHelpers.skip_warn
say PLURAL_MODEL_NAME_WARN_MESSAGE
say PLURAL_MODEL_NAME_WARN_MESSAGE % [name, singular]
ModelHelpers.skip_warn = true
end
name.replace name.singularize
name.replace singular
assign_names!(name)
end
end

View file

@ -38,7 +38,7 @@ class ModelGeneratorTest < Rails::Generators::TestCase
content = run_generator ["accounts".freeze]
assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/
assert_file "test/models/account_test.rb", /class AccountTest/
assert_match(/Plural version of the model detected, using singularized version. Override with --force-plural or setup custom inflection rules for this noun before running the generator./, content)
assert_match(/The model name 'accounts' was recognized as a plural, using the singular 'account'\. Override with --force-plural or setup custom inflection rules for this noun before running the generator\./, content)
end
def test_model_with_underscored_parent_option