У меня есть наблюдатель следующих двух моделей:
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?
или чему-то подобному.