Improve numeric field validation errors (#4076)
Usager : améliore le message d'erreur lorsque la valeur d'un champ numérique est invalide
This commit is contained in:
commit
d3a7bc271e
6 changed files with 26 additions and 4 deletions
|
@ -1,5 +1,11 @@
|
|||
class Champs::DecimalNumberChamp < Champ
|
||||
validates :value, numericality: { allow_nil: true, allow_blank: true }
|
||||
validates :value, numericality: {
|
||||
allow_nil: true,
|
||||
allow_blank: true,
|
||||
message: -> (object, data) {
|
||||
"« #{object.libelle} » " + object.errors.generate_message(data[:attribute].downcase, :not_a_number)
|
||||
}
|
||||
}
|
||||
|
||||
def for_export
|
||||
processed_value
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
class Champs::IntegerNumberChamp < Champ
|
||||
validates :value, numericality: { only_integer: true, allow_nil: true, allow_blank: true }
|
||||
validates :value, numericality: {
|
||||
only_integer: true,
|
||||
allow_nil: true,
|
||||
allow_blank: true,
|
||||
message: -> (object, data) {
|
||||
"« #{object.libelle} » " + object.errors.generate_message(data[:attribute].downcase, :not_an_integer)
|
||||
}
|
||||
}
|
||||
|
||||
def for_export
|
||||
processed_value
|
||||
|
|
|
@ -128,6 +128,7 @@ fr:
|
|||
messages:
|
||||
blank: "doit être rempli"
|
||||
not_a_number: 'doit être un nombre'
|
||||
not_an_integer: 'doit être un nombre entier (sans chiffres après la virgule)'
|
||||
greater_than: "doit être supérieur à %{count}"
|
||||
greater_than_or_equal_to: "doit être supérieur ou égal à %{count}"
|
||||
less_than: "doit être inférieur à %{count}"
|
||||
|
|
5
config/locales/models/champs/fr.yml
Normal file
5
config/locales/models/champs/fr.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
fr:
|
||||
activerecord:
|
||||
attributes:
|
||||
champs:
|
||||
value: La valeur du champ
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Champs::DecimalNumberChamp do
|
||||
subject { Champs::DecimalNumberChamp.new(value: value) }
|
||||
subject { build(:champ_decimal_number, value: value).tap(&:valid?) }
|
||||
|
||||
describe '#valid?' do
|
||||
context 'when the value is integer number' do
|
||||
|
@ -20,6 +20,7 @@ describe Champs::DecimalNumberChamp do
|
|||
let(:value) { 'toto' }
|
||||
|
||||
it { is_expected.to_not be_valid }
|
||||
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre"]) }
|
||||
end
|
||||
|
||||
context 'when the value is blank' do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Champs::IntegerNumberChamp do
|
||||
subject { Champs::IntegerNumberChamp.new(value: value) }
|
||||
subject { build(:champ_integer_number, value: value).tap(&:valid?) }
|
||||
|
||||
describe '#valid?' do
|
||||
context 'when the value is integer number' do
|
||||
|
@ -14,12 +14,14 @@ describe Champs::IntegerNumberChamp do
|
|||
let(:value) { 2.6 }
|
||||
|
||||
it { is_expected.to_not be_valid }
|
||||
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre entier (sans chiffres après la virgule)"]) }
|
||||
end
|
||||
|
||||
context 'when the value is not a number' do
|
||||
let(:value) { 'toto' }
|
||||
|
||||
it { is_expected.to_not be_valid }
|
||||
it { expect(subject.errors[:value]).to eq(["« #{subject.libelle} » doit être un nombre entier (sans chiffres après la virgule)"]) }
|
||||
end
|
||||
|
||||
context 'when the value is blank' do
|
||||
|
|
Loading…
Reference in a new issue