экземпляр?возвращая неожиданный результат - PullRequest
1 голос
/ 13 февраля 2012

У меня есть наблюдатель следующих двух моделей:

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? или чему-то подобному.

1 Ответ

1 голос
/ 13 февраля 2012

Для этого используйте оператор case.

def after_create(record)
  x = case record
    when MyFirstModel
      # x is set to one thing
    when MySecondModel
      # x is set to another thing
    else ; return false
  end

  # use x in a common way
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...