カードの検証がまったくできないようです。私を助けてください!
空白の注文フォームを送信するとエラーが発生します。
ActiveModel::MassAssignmentSecurity::Error in OrdersController#create
Can't mass-assign protected attributes: card_number, card_verification
順番に.rb
attr_accessor :card_number, :card_verification
attr_accessible :card_expires_on, :card_type, :cart_id, :first_name, :ip_address, :last_name
belongs_to :cart
validate :validate_card, :on => :create
validate :validate_card, :on => :update
データベースに card_number と card_verification を保存したくないのは明らかです。
order.rb のメソッド
def validate_card
credit_card.errors.full_messages.each {|msg| errors[:base] << msg} if credit_card.invalid?
end
def credit_card
@credit_card ||= ActiveMerchant::Billing::CreditCard.new(
:type => card_type,
:number => card_number,
:verification_value => card_verification,
:month => card_expires_on.try(:month),
:year => card_expires_on.try(:year),
:first_name => first_name,
:last_name => last_name
)
end
試してみてください!
これが役立つ場合、Gemfileにこれがあります
gem 'activemerchant'
ありがとう :)