私はすべて同じクラスの3つのオブジェクトを持っています。 1つは Item.new
で作成され、残りの2つはデータベース(Mongoid)から取得されました。これらのオブジェクトのいずれかを別のメソッドに渡して、そのメソッドの型を is_a
経由でチェックしています:
def initialize (item, attrs = nil, options = nil)
super(attrs, options)
raise 'invalid item object' unless item.is_a?(Item)
さて、このレイズはヒットしています。だから私はクラス、is_aとinstance_ofのレールコンソールをチェックします。私は矛盾する結果を得ている。なぜ彼らは同じクラス
を持っていますが、そのうちの1つだけが instance_of
の class
ですか?
>> i0.is_a? Item
=> false
>> i1.is_a? Item
=> false
>> i2.is_a? Item
=> true
>> i0.class
=> Item
>> i1.class
=> Item
>> i2.class
=> Item
>> i0.instance_of?(Item)
=> false
>> i1.instance_of?(Item)
=> false
>> i2.instance_of?(Item)
=> true
このタイプの入力を確認するには、より良い方法がありますか?同じクラスの3つのものがすべてそのクラスのインスタンスにならないのはなぜですか?