从 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') }
从 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') }