2010-12-14 14 views
0

Ich habe eine Ruby on Rails-App erstellt, mit der Benutzer Trainings nachverfolgen können. Ich erlaube ihnen, ein Workout privat oder öffentlich zu machen, das mit der Ganzzahl 1 bis Workout.share bezeichnet wird.
Jetzt versuche ich bestimmte Teilmengen dieser public_workouts anzuzeigen. Ich rufe alle public_workouts durch eine named_scope:Entfernen von Datensätzen mit leerem Feld durch ein named_scope

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

...

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

Die Workout Tabelle auch eine Spalte für rounds hat. Ich möchte die Ausgabe von public_workouts auf nur Datensätze beschränken, die etwas in workout.rounds haben. Ein anderes Wort, wenn workout.rounds leer ist, möchte ich das nicht enthalten.
Was ist der beste Weg, dies zu tun?

UPDATE:

Ich habe erwähnt, dass ich Schienen 2.3.8

Antwort

1

ich es funktionieren soll denken, bin mit:

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

nicht zu funktionieren scheint, aber ich gescheitert Erwähnen Sie, dass ich Schienen 2.3.8 verwende, würde das die Syntax ändern? – bgadoci

+0

das würde aber nicht davon ausgehen, dass workouts.rounds nicht NULL ist versuchen Sie ändern IS NOT NULL auf <> '' (das sollte blanc string darstellen - aber ich versuche das nicht) – codevoice

+0

Ah, das hat tatsächlich funktioniert. Ich habe versucht, dies auch auf eine andere Spalte anzuwenden, die ich habe, das ist eine Zeichenkette. Was wäre anstelle von IS NOT NULL erforderlich, um zu überprüfen, ob die Zeichenfolge leer ist? – bgadoci

Verwandte Themen