В моей модели у меня есть некоторые валидации, как это:Установить поле в присваивателе
validates :text, presence: true, unless: :skip_fehler
я установил skip_fehler
для конкретного экземпляра в моем контроллере:
@user.create(skip_fehler: params['skip_fehler'], text: ..
Bascially мой код работал, когда я был в моей модели:
attr_accessor :skip_fehler
Единственная проблема, я заметил, что когда @user.skip_fehler
был установлен в ""
. Проверка также была пропущена.
Я хочу, чтобы избежать такого поведения Так я пытался изменить accessor
к reader
:
attr_reader :skip_fehler
И я написал свой собственный метод установки:
def skip_fehler=(value)
if value && value != ""
self.skip_fehler = true
else
self.skip_fehler = false
end
end
Но теперь, я получаю эту Ошибка: stack level too deep
Я полагаю, потому что в пределах skip_fehler=(value)
я звоню self.skip_fehler = true
!
Как мне изменить код? Итак, когда skip_fehler
установлен в контроллер на ""
, его набор равен false
в модели? Thanks