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の未確認の変数またはメソッド「all」」エラーが発生します。一連のバリエーションをすべて試しましたが、何も得られないようです。

私が到達しようとしているのは、一連のスコープをチェーンしてから、ページネーションを適用して、アラームのページを出力できるようにすることです。

どんな助けでも大歓迎です。

ありがとう、

スティーブ

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 に答える