0

我有一个模型,上面定义了一些范围:

class Alarm < ActiveRecord::Base
  scope :open_alarms, where("state != ?", AlarmStates::STATELIST[-1])
  scope :new_alarms, where('state is null')
  scope :site_alarms, lambda{ |site| where(:mac_address => site.mac_address)}
  #etc
end

这些范围都是 Relation 对象,所以我应该能够在 with_scope 调用中链接它们。但我不能让它全部工作。我一直在尝试类似的东西

Alarm.with_scope(:find => Alarm.open_alarms){all}

AFAIK 应该将关系警报 .open_alarms 应用于查找,然后有效地找到与 open_alarms 范围匹配的所有警报。但是当我尝试这个时,我得到一个'未识别的变量或方法“所有”的 Main:Object' 错误。我已经尝试了一系列变体,但似乎没有任何效果。

我想要达到的目标是能够链接一系列范围,然后应用分页,这样我就可以输出警报页面。

任何帮助将不胜感激。

谢谢,

史蒂夫

4

1 回答 1

0

@alarms = Alarm.open_alarms.page(params[:page])

@alarms = Alarm.open_alarms.site_alarms("http://sample.me").page(params[:page])

(使用 gem will_paginate 或 kaminari)。

您似乎正在使用 3.2 之前的代码进行查询。

于 2012-10-09T12:29:06.110 回答