0
ここには2つのモデルがあります。顧客と住所です。お客様has_one
住所です。入れ子になった属性の検証に失敗した場合のエラー発生方法
class Customer < ActiveRecord::Base
has_one :address
accepted_nested_attributes_for :address, :allow_destroy => true
end
class Address < ActiveRecord::Base
belongs_to :customer
validates :add_line, :presence => true
end
<% simple_form_for @customer do |f| %>
.....
<%=f.simple_fields_for :address do |builder| %>
<%=render ('address', f: builder) %>
<% end %>
<%end %>
アドレスビュー
<%=f.input :add_line %>
address
はcustomer
でネストされた属性です。私たちが抱えている問題は、address
がcustomer
ビュー内で誤って変更された場合(例:add_line
)、エラーが表示されないことです(顧客コントローラに@customer.update_attributes
)。このような方法でネストされた属性を設定する方法はありますか?nil add_line
は更新に失敗しますか?
一つ、あなたがAddress
モデルでbelongs_to :customer
が必要であることを覚えておいてください:
に検証を追加する必要があります。 'reject_if'はモデル'アドレス 'の検証と重複していますか? 'address_invalid'は' address'モデルの検証を繰り返します。 – user938363
私たちは、 'add_line'が' address'モデルでnilであれば、コントローラは静かに渡す代わりにエラーを発生させなければならないという問題があります。 '!'を試してください。ネストされたモデルに妥当性検査の失敗があると、エラーは発生しません。 – user938363
'Customer'モデルの検証メソッドで、エラー/エラーが発生しますか? –