shipping_address
請求先住所と同じでない限り、 の存在を検証したいと考えています。私はそれのために書いたattr_writer
。この属性をチェックしたオブジェクトで初期化したい。
class Order < ActiveRecord::Base
attr_writer :ship_to_billing_address
accepts_nested_attributes_for :billing_address, :shipping_address
validates :shipping_address, presence: true, unless: -> { self.ship_to_billing_address? }
def ship_to_billing_address
@ship_to_billing_address = true if @ship_to_billing_address.nil?
@ship_to_billing_address
end
def ship_to_billing_address?
ship_to_billing_address
end
end
フォームは次のとおりです。
# Use my shipping address as billing address.
= f.check_box :ship_to_billing_address
ただし、これは機能しません。フォームは値として 0 と 1 を送信します。そこで、メソッドを次のように変更しました。
def ship_to_billing_address?
ship_to_billing_address == 1 ? true: false
end
次に、検証がまだ開始されているかどうかを確認するために、これに進みます...
def ship_to_billing_address?
true
end
ただし、 false が返された場合でも、検証はまだ開始されています。
3時間後、これを修正する方法がありません...