从4.1.9升级rails4.2.6时的范围问题

时间:2016-07-12 07:08:46

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-2.0

在从var t = TimeSpan.ParseExact("04:00:00", @"hh\:mm\:ss", CultureInfo.InvariantCulture); var days = Enumerable.Range(0, (int)(dtr.TimeOut - dtr.TimeIn).TotalHours + 1) .Select(i => dtr.TimeIn.AddHours(i)) .Where(date => (date.Date == TimeOut.Date && date.TimeOfDay <= t) || date.Hour >= 22) .Count(); 升级到rails4.1.9 =&gt;

的过程中,在导轨4.2.6中出现问题

我试图从id与4.2.6相同的表中找到那些记录。 所以我写了一个范围

parent_id

当我使用此范围并计算

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

返回 self.all.parent_record

在rails 4.1.9中它返回 -

"# ActiveRecord::Relation []>"

Ruby版本 - ruby​​-2.0.0-p598

我哪里错了?

1 个答案:

答案 0 :(得分:0)

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

我会写这样的内容来查找parent_id与自己id匹配的所有记录:

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