6

ユーザーモデルがあります。を実行することで、ユーザーが管理者であるかどうかを確認できますa_user.try(:admin?)

管理者ではない、過去 X 分間に更新されたすべてのユーザーを取得する名前付きスコープを定義したいと思います。これまでのところ、私は持っています:

scope :recent, lambda { { :conditions => ['updated_at > ?', 5.minutes.ago] } }

これにより、過去 5 分間に更新されたすべてのユーザーが正常に取得されますが、管理者チェックを組み込むにはどうすればよいですか? try()スコープ内のユーザーのインスタンスを呼び出す方法がわかりません...

4

3 に答える 3

9

users テーブルの admin 列がブール値の場合、

scope :recent, lambda { :conditions => ['updated_at > ? AND admin != ?', 5.minutes.ago, true] }
于 2013-01-31T10:41:01.973 に答える
6

を使用する代わりに、lambdaクラス メソッドを使用する方がクリーンだと思います。

def self.recent
  where('updated_at > ?', 5.minutes.ago)
end

def self.admin
  where(admin: true)
end

def self.recent_and_admin
  recent.admin # or where('updated_at > ?', 5.minutes.ago).where(admin: true)
end
于 2013-01-31T12:53:06.830 に答える