在作用域上使用with_scope

时间:2012-10-09 12:19:08

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

我有一个模型,其中定义了一些范围:

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,应将Relation Alarm .open_alarms应用于find,然后有效地查找与open_alarms范围匹配的所有警报。但是当我尝试这个时,我得到了一个'未识别的变量或方法“全部为”Main:Object“错误。我尝试过一系列变种,但似乎没有任何变化。

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

非常感谢任何帮助。

谢谢,

史蒂夫

1 个答案:

答案 0 :(得分: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之前的代码来进行查询。