Как понимаю все сходится на том что .isFieldSet() аналог "isTouched including defaulting".
Интересный вопрос
в каком случае имеем Default state для поля.
и будет ли данный Default state установлен (и как результат .isFieldSet() == true)
при вызове super() в initValue().
Предполагаемые варианты получения Default state == true
Вариант 1: значение, отличное от записанного в базу
Вариант 2: дефолтное присваивание, если отличается от варианта 1. Например присваивание сделанное в initValue()
Вариант 3. вызов super() в initValue(). То есть Default state не может получаться при использовании оператора присваивания.
Лично мне ближе Вариант 3.
Цитата:
Сообщение от
mazzy
а как сейчас работает логика defaulting'а?
сейчас это просто значение, отличное от записанного в базу? или как-то по-другому?
Цитата:
Сообщение от
dech
Очевидно, что после любого присваивания, даже дефолтного метод вернет true.
False, если поле вообще не трогали.
Цитата:
Сообщение от
gl00mie
Не важно значение поля, важен факт того, было ли оно явно установлено.
...
В моем понимании задача логики defaulting'а - неявно подтягивать значения по умолчанию либо значения связанных полей
на основе тех полей, которые заданы явно.
...
В общем, действительно, дело в том, трогали ли поле
