Проверка между двумя полями модели с булевыми условиями

1112 У меня есть модель под названием «Помощь». В этом у меня есть два поля booleanos, и мне нужна проверка, которая принимает меня, например, только тогда, когда boolean1 sea "false", boolean2 может быть «true» или «false». в то время как когда boolean1 равен «true», не принимайте boolean2 как «true»

Здесь условия:

  • Если boolean1 = false, boolean2 может быть true или false
  • Если boolean1 = true, boolean2 должно быть false не принимать true

Издание:

Посмотрим, смогу ли я Чтобы объяснить себя лучше, модель, которую я имею, как я сказал ранее, называется Assistance, которую я связал с другой моделью, называемой Workers, идея состоит в том, что в моей форме помощи я добавляю Assists по датам, эти два булевых поля, которые я ранее назвал, являются «Attended». ", что верно, если работник действительно присутствовал, и false, если нет, другим логическим полем является" Исключение ", цель которого состоит в том, чтобы, если работник НЕ посещал, он мог подать исключение (в тот день я представляю обоснование или медицинскую лицензию). Я пропускаю) проверьте true, и будьте ложными, когда я не представлю это обоснование.

Поэтому, когда в моем логическом «Я присутствую» это правда, я имею в виду, что s Я присутствовал, не может быть никаких исключений.

1
задан 19.01.2017, 02:03
0 ответов

Обобщая, когда asistio он true, excepcion должен будь быть false, это это?. Тогда ты мог бы называть callback как:

class Asistencia < ActiveRecord::Base
  before_validation :sin_excepcion, if: :asistio?

  def sin_excepcion
    self.excepcion = false
  end
end

Сейчас, если ты хочешь сделать это как утверждение вместо callback, то есть пользователь получил сообщение ошибки утверждения, вместо которого сама система меняла бы ему поле excepcion в false, ты мог бы пытаться с:

class Asistencia < ActiveRecord::Base
  validates :excepcion, inclusion: [false], if: :asistio?
end

Лично я думаю, что он более дружеский для пользователя, что система изменила тебе стоимость, которой он вручает тебе ошибку утверждения, но там ты увидишь, что то, чего в действительности ты требуешь.

0
ответ дан 03.12.2019, 17:38

Не если я понимаю хорошо твой вопрос, но если то, что желается, состоит в том, чтобы распределять стоимость в true в boolean2, каждый раз, когда boolean1 будьте true, это может подавать тебя:

before_validation :validate_boolean1

def validate_boolean1
    if self.boolean1 == true
        self.boolean2 = true 
    end
end
0
ответ дан 03.12.2019, 17:38

Для того, чтобы он выполнил условия:

  • Если Он Оказал помощь = true, Исключение - false
  • Если Он Оказал помощь = false, Исключение может быть true или false

Ты можешь создавать функцию, которая скроллировала бы перед утверждением объявлять ее в твоей модели следующего способа:

before_validation :validate_boolean1
    def validate_boolean1
        if self.asistio == true
            self.excepcion = false 
        end
    end

Издайте мой ответ на, как ты изменил твой вопрос.

0
ответ дан 03.12.2019, 17:38

Теги

Похожие вопросы