2010-12-14 77 views
0

J'ai créé une application Ruby on Rails qui permet aux utilisateurs de suivre les entraînements. Je leur permet de faire un exercice privé ou public qui est dénoté en passant l'entier 1 à Workout.share. Je cherche maintenant à afficher certains sous-ensembles de ceux public_workouts. J'appelle tous public_workouts par un named_scope:Suppression d'enregistrements avec un champ vide à l'aide d'un scope_courbe

# workouts_controller.rb 
@workouts = Workout.public_workouts.all 

...

# workout.rb 
named_scope :public_workouts, :conditions => {:share => 1} 

Le tableau de la séance d'entraînement a également une colonne pour rounds. Je veux limiter la sortie de public_workouts aux seuls enregistrements qui ont quelque chose dans workout.rounds. Un autre mot, si workout.rounds est vide alors je ne veux pas que cela soit inclus.
Quelle est la meilleure façon de faire cela?

MISE À JOUR:

Je l'ai dit que j'utilise des rails 2.3.8

Répondre

1

je pense que cela devrait fonctionner:

named_scope :published, lambda { 
{ :conditions => 
    ["workouts.rounds IS NOT NULL AND workouts.share = ?", 1] 
}} 
+0

ne semble pas fonctionner, mais je pas mentionner que j'utilisais les rails 2.3.8, cela changerait-il la syntaxe? – bgadoci

+0

cela wouldnt mais cela suppose que workouts.rounds n'est pas NULL essayez de changer IS NOT NULL sur <> '' (cela devrait représenter la chaîne blanche - mais je n'essaie pas cela) – codevoice

+0

Ah, en fait cela a fonctionné. J'essayais de l'appliquer aussi à une autre colonne que j'ai, c'est une chaîne. Qu'est-ce qui serait nécessaire à la place de IS NOT NULL pour vérifier si la chaîne est vide? – bgadoci