奇妙に思えますが、そうですか?
validates_presence_of [:visa, :mc, :discover, :amex], :if => :credit_card => true
ブラウザで構文エラーが発生するため、入力を受け付けます。ありがとう。
奇妙に思えますが、そうですか?
validates_presence_of [:visa, :mc, :discover, :amex], :if => :credit_card => true
ブラウザで構文エラーが発生するため、入力を受け付けます。ありがとう。
あなたはまた、procでそれを行うことができます
validates :visa, :mc, :discover, :amex, :presence => true, :if => Proc.new{|model| model.credit_card.present?}
これを試して
validates :visa, :mc, :discover, :amex, :presence => true, :if => :credit_card?
クレジットカードがブールフィールドの場合。
そうでなければメソッドを定義する
def credit_card?
credit_card.present?
end
了解しましたが、それは苦痛でした。そして、決して完璧ではありません。次のステップは、ユーザーがクレジットカードまたは小切手のみを選択できるようにすることです。Jquery?
model.rb
validate :check_if_at_least_one_credit_card, :if => "credit_card=='1'"
validate :check_if_check_is_clicked, :if => "check=='1'"
private
def check_if_at_least_one_credit_card
unless mc=="1" || visa=="1" || amex=="1" || discover=="1"
errors.add(:base, "You need to choose at least one credit card type")
end
end
def check_if_check_is_clicked
unless check=="1"
errors.add(:base, "You need to choose check or credit card")
end
end
次に、これをクリーンアップする必要がありますが、意図したとおりに機能します。
template.html.haml
%p{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.check=="1" ? 'Check' : ''
%p{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.credit_card=="1" ? 'Credit Card' : ''
%ul
%li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.discover=="1" ? 'Discover' : ''
%li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.amex=="1" ? 'American Express' : ''
%li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.mc=="1" ? 'Mastercard' : ''
%li{ :style => "font-size: 13px; color: #848687;" }= @bulk_order.visa=="1" ? 'Visa' : ''