1
予期しない結果を返す:あなたが見ることができるようにinstance_of?私は2つのモデル以下のオブザーバー持っ
class MyObserver < ActiveRecord::Observer
observe :my_first_model, :my_second_model
def after_create(record)
x = if record.instance_of?(MyFirstModel)
# x is set to one thing
elsif record.instance_of?(MySecondModel)
# x is set to another thing
end
# use x in a common way
end
end
を、私は、その作成に観察されているモデルに応じて異なるものにx
を設定しています。
instance_of?
とkind_of?
を使用して予期しない結果が発生しています。たとえば、Rails.logger.debug record.class.name
を実行してMyFirstModel
を参照することができますが、record.instance_of?(MyFirstModel)
はfalseを返します。
誰もがこれまでに遭遇したことはありますか?私はRuby 1.9.3とRails 3.1を使用しています。
一方、私はrecord.class.name.inquiry.MyFirstModel?
または類似のものに頼るつもりです。
回答ありがとうございます。@gg_s私はあなたがそのようなケースステートメントでクラス名を使うことができたことを知りませんでした。悲しいことに、それは問題を解決せず、 '記録'が正しく識別されていません。 – tristanm