我有一个观察者跟随两个模型:
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?
或类似的东西。
答案 0 :(得分:1)
为此使用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