簡體   English   中英

Rails嵌套模型驗證僅在填充某些內容時運行

[英]Rails nested model validation only runs when something is filled

我有一個看起來像這樣的表格:

<%= 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顯示錯誤,並且@user.save現在返回false。 我真的不知道為什么會這樣,並且在Google上找不到任何相關內容。 感謝您的幫助!

編輯:這些字段的類型為bigint 我寫了一個遷移文件將其更改為string ,現在可以正常工作了。 當我提交任何內容時,看到的錯誤是空白而不是數字。 仍然有興趣知道為什么驗證不適用於bigint

您可以將reject_if: :all_blank檢查添加到accepts_nested_attributes_for以允許盡管數據類型也不允許空嵌套條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM