Я пытаюсь проверить поле формы в приложении Rails одним из двух способов, в зависимости от переданных параметров. Если у моего объекта есть параметр allow_negative: true
, я хочу:ActiveModel Validate form имеет отрицательное значение, если true else validate form имеет положительное значение
validates :amount, numericality: {less_than_or_equal_to: 0}
в противном случае я хочу:
validates :amount, numericality: {greater_than_or_equal_to: 0}
Когда я пытаюсь просто сделать это:
validates :amount, numericality: {greater_than_or_equal_to: 0}, unless: :allow_negative
validates :amount, numericality: {less_than_or_equal_to: 0}, if: :allow_negative
Он просто выполняет второй экземпляр validates :amount
Для справки, вот весь мой класс:
class ViewModel
include ActiveModel::Model
validates :description, presence: true
validates :amount, numericality: {greater_than_or_equal_to: 0}, unless: :allow_negative
validates :amount, numericality: {less_than_or_equal_to: 0}, if: :allow_negative
attr_reader :amount
attr_reader :description
attr_reader :allow_negative
attr_reader :order
def initialize(user, params)
@amount = params[:amount]
@description = params[:description]
@allow_negative = params[:allow_negative]
@order = Order.find(params[:order_id])
end
end