У меня есть форма, которая выглядит примерно так:
<%= form_with model: @user, url: wizard_path, method: :patch, local: true do |f| %>
<%= f.fields_for :asset_transfers do |asset_transfer_form| %>
<%= asset_transfer_form.text_field :account_number, autofocus: true, class: "form-control" %>
<div class="invalid-feedback"> <%= @user.errors.messages[:"asset_transfers.account_number"].join(", ") %> </div>
<%= asset_transfer_form.text_field :institution_number, class: "form-control" %>
<div class="invalid-feedback"><%= @user.errors.messages[:"asset_transfers.institution_number"].join(", ") %></div>
<% end %>
<% end %>
Вот моя ассоциация:
user.rb
has_many :asset_transfers, dependent: :destroy
accepts_nested_attributes_for :asset_transfers, allow_destroy: true
asset_transfer.rb
belongs_to :user
validates :account_number, :institution_number, presence: true, numericality: true
Когда я заполняю форму, если я отправляю пустое поле для обоих полей, ошибки не отображаются и @user.save
возвращает true
. Однако, если я наберу случайную строку
в одном из полей и отправить отображаются ошибки, и @user.save
теперь возвращает ложь. Я действительно понятия не имею, почему это происходит, и не смог найти что-либо связанное с Google. Благодарим за любую помощь!
РЕДАКТИРОВАТЬ: Эти поля имеют тип bigint
. Я написал миграцию, чтобы изменить их на string
, и теперь она работает нормально. Когда я отправляю ничего не заполнив, я вижу ошибки для них, а не число. Все еще интересно узнать, почему проверки не работали с bigint
.