Мне нужно проверить некоторые атрибуты ТОЛЬКО, если они не пусты.
Например, пользователь может иметь логотип. Если мы попытаемся загрузить его - валидация должна работать. Если мы просто обновляем данные пользователя без логотипа, валидация должна быть пропущена.
Теперь у меня есть:
Форма имеет выбор из двух файлов. Один - логотип, второй - аватар. Оба этих атрибута являются частью модели User. В модели пользователя a есть проверка:
validates_preference_of :logo_file_name, :message=>I18n.t("...")
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
validates_preference_of :avatar_file_name, :message=>I18n.t("...")
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
В этом случае, если мы попытаемся создать нового пользователя без выбранного логотипа и аватара, у нас будут ошибки (наша проверка). Я попробовал проверку изменений и добавил ": on = > : update" следующим образом:
validates_preference_of :logo_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
validates_preference_of :avatar_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
Теперь я могу создать пользователя без выбранного логотипа и аватара, но если я попробую отредактировать пользователя и попробовать загрузить только логотип - у меня есть ошибки проверки аватара. Если я выберу файл для аватара и логотип, оставьте пустым - у меня есть ошибки проверки для логотипа.
Как я могу запустить проверку ony для атрибута, который я хочу изменить?