从 4.1.9 升级到 rails4.2.6 时出现范围问题

Issue with scope while upgrade in rails4.2.6 from 4.1.9

rails4.1.9 升级到 4.2.6 期间 rail 4.2.6 出现问题=>

我正在尝试从 table 中查找那些 ID 与 parent_id 相同的记录。 所以我写了一个作用域

scope :parent_record, ->{ where(parent_id: self[:id]) } 

当我使用这个示波器并计算时

  self.all.parent_record

它returns"# ActiveRecord::Relation []>"

而在 rails 4.1.9 中 returns -

#ActiveRecord::Relation [#Category id: 6, name: "Business Disruption", description: "", parent_id: 6, status: "a", target_risk: nil, lock_target_risk: false].

Ruby 版本 - ruby-2.0.0-p598

我哪里错了?

我真的很惊讶这在 Rails 4.1.9 中有效。因为 self 会 return class 而不是范围上下文中的单个实例。因此 self[:id] 没有任何意义。

我会写这样的东西来找到所有 parent_id 匹配他们自己的记录 id:

scope :own_parent, -> { where('id = parent_id') }