Я разрабатываю API Rails 5, где у меня есть модель компании.Проверка числовых значений при обновлении записи в Rails 5 API
Компания имеет 3 поля, имя, адрес электронной почты и разметку.
И проверка
validates :name, presence: true
validates :email, presence: true
validates :markup, presence: true, numericality: { only_integer: true }
Когда я хочу, чтобы обновить запись с помощью PUT: компании/1 Я только хочу, чтобы передать значения, которые изменились. Поэтому, если я не отправляю параметр имени, имя не изменяется. Это работает, и валидатор не жалуется.
Только валидация разметки вызывает проблемы. Если я не передаю длинный параметр разметки в запросе, я получаю сообщение об ошибке, что разметка должна быть целым числом.
Как мне изменить мою проверку, чтобы требовалась разметка, но я обновляю запись, не нужно ее передавать, если она не изменилась?
В моей CompanyController я имею
def update
if @company.update(company_params)
render json: {
status: 200,
message: 'Company updated successfully',
company: @company
}.to_json()
else
render json: @company.errors, status: :unprocessable_entity
end
end
И это:
def company_params
params.permit(:name, :email, :markup)
end
вы можете показать свой код контроллера? –
Возможно ли, что вы пытаетесь обновить «старую» запись, которая не имеет набора атрибутов «markup»? И что такое тип столбца базы данных 'markup'? Целое, или ... строка? – zwippie