Я определил эту проверку ActiveRecord
validates :attr_1, numericality: {
less_than_or_equal_to: :attr_2,
message: "...",
allow_nil: true,
}, if: [proc { |a| a.attr_2.present? }]
, которая, как правило, работает нормально, но я получаю ложное срабатывание в одном случае, когда attr_1 == attr_2
.
Я пыталсяотладьте проблему, печатая значения внутри сообщения и помещая в журнал сообщение, подобное этому
validates :attr_1, numericality: {
less_than_or_equal_to: :attr_2,
message: "%{value}, %{count} - ...",
allow_nil: true,
}, if: [proc { |a| Rails.logger.info "#{a.attr_1} <= #{a.attr_2} -> #{a.attr_1 <= a.attr_2}" ; a.attr_2.present? }]
, и возникает ошибка с этим сообщением
9531.28, 9531.28 - ...
, кроме того, в журналах, которые я вижу
9531.28 <= 9531.28 -> true
Как это могло быть возможно?
Редактировать: Я видел, что сравниваемые значения анализировались как число ранее, но результат, кажется, тот же...