2

Braintree Payment Gem をインストールしたところ、以前は機能していたページでエラーが発生しました。Addressという名前のモデルがあります。

superclass mismatch for class Address

Braintree にも Address という名前のクラスがあるため、これは予想されることですか? どうすればそれを回避/修正できますか?

最新のbraintree gem (v2.25)、Ruby 2.0 on rails 4.0を使用しています

4

2 に答える 2

2

あなたは正しいです。Braintree gem にはクラス Address があります。ただし、Address クラスは Braintree モジュール内にあります。これはモジュール内にあるため、クラスはモジュールと競合してはなりません。もちろん、Address クラスも Braintree という名前のモジュール内にある場合を除きます。irb では次のような動作が見られるはずです。

module Braintree
    class Address
    end
end

module MyModule
    class Address < String #Or ActiveRecord::Base or any class
    end
end

アドレスは別のモジュールにあるため、問題なく動作するはずです。ただし、それらが同じモジュールにある場合:

module Braintree
    class Address
    end
end

module Braintree
    class Address < String #Or ActiveRecord::Base or any class
    end
end

上記の投稿と同様のエラーが表示されます。

したがって、オプションは、Address クラスの名前が一意であることを確認するか、別のモジュール内にあり、参照するたびに正しい Address オブジェクトを参照していることを確認することです。

于 2013-10-23T17:14:46.797 に答える
0

2 つのバージョンの Braintree (2.16 と 2.25) がインストールされていることがわかりました。古いものをアンインストールした後、エラーは表示されなくなりました。

于 2013-10-24T13:37:29.863 に答える