0

カードの検証がまったくできないようです。私を助けてください!

空白の注文フォームを送信するとエラーが発生します。

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'

ありがとう :)

4

1 に答える 1

1

保護された属性を一括割り当てできません: card_number、card_verification

これらの属性 ( :card_number:card_verification) をattr_accessibleリストに追加します。検証はまだ開始されていません。ActiveRecord が からオブジェクトを作成しようとしていますparams

于 2013-05-29T23:58:04.857 に答える