Rails 奇怪的问题, 为什么 case 一个 class 识别不到?

linjunhalida · 2012年08月15日 · 最后由 linjunhalida 回复于 2012年08月15日 · 1661 次阅读

我写一个 ActivityObserver:

class ActivityObserver < ActiveRecord::Observer
observe :user
  def after_create(item)
    parent = nil

    case item.class
    when User
      xxxx

然后 when 里面的代码没有被执行到。当我换成 case item.class.name.to_sym 之后,就执行到了。

虽然问题解决,但是原理没有弄明白,为什么 class 比较失败了,有谁清楚详细原因的? (好吧,本来感觉就不应该用 class 比较,我还去用,是我的错。。)

改成这样

case item
when User
  ...

case 是基于 ===

恩,我应该在发出来之前先去好好看看文档。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号