У меня есть наблюдатель следующие две модели:instance_of? возвращая неожиданный результат
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. Я не знал, что вы могли бы использовать имя класса в аргументе case, так что что-то новое узнали. К сожалению, это не решило проблему, и «запись» неправильно идентифицируется. – tristanm