Condition sur un modèle plutôt que sur un contrôleur

Bonjour,

J’ai dans une table “users” un champ nommé “active” (qui est booléen)
permettant de ne traiter que les utilisateurs dont le compte a été
activé. Aussi ai-je ajouté dans chaque action du contrôleur respectif
une condition, afin de vérifier que “active” est bien vrai. En voici
quelques unes :

class UsersController < ApplicationController
def index
@users = User.find( :all, :conditions => [‘active = ?’, true] )
end

def show
@user = User.find( params[:id], :conditions => [‘active = ?’, true]
)
end
end

Cependant je me demande s’il ne serait pas possible de plutôt
centraliser cette condition sur le modèle User, pour que ce soit plus
“DRY” vous voyez :wink:

Merci pour vos lumières.

Zhang’

Cependant je me demande s’il ne serait pas possible de plutôt
centraliser cette condition sur le modèle User, pour que ce soit plus
“DRY” vous voyez :wink:

Je pense que c’est une bonne utilisation du “with_scope”.

Qques explications ici :
http://ryandaigle.com/articles/2006/07/20/a-rails-feature-you-should-be-using-with_scope

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/

C’est même le cas d’école pour with_scope en fait.

Cela dit, il n’y a pas une autre solution élégante permettant d’écrire
qqchose comme users.active.find(:all) ?

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/

C’est même le cas d’école pour with_scope en fait.

Guillaume B. a écrit :

C’est même le cas d’école pour with_scope en fait.

Cela dit, il n’y a pas une autre solution élégante permettant d’écrire
qqchose comme users.active.find(:all) ?

gUI

Si, les named_scope dans la version 2.1 :

class User < ActiveRecord::Base
named_scope :active, :conditions => {:active => true}
end

User.active == User.find(:all, :conditions => {:active => true})


Martin C.
http://www.noremember.org | http://www.synbioz.com

Waoh, c’est exactement ce que je souhaitais :smiley:
Merci beaucoup !

Si, les named_scope dans la version 2.1 :

C’est assez classe en effet (-:

gUI


Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/