Wenn die Plannummern in der Datenbank vorhanden sind, und es ist ein Plan
Modell dann könnte man einfach sagen, so etwas wie:
@plan = Plan.find_by(:id => params[:plan])
if([email protected])
flash[:notice] = "Please select a membership plan to register."
redirect_to root_url
end
Jetzt Sie haben Zugriff auf die vollständigen Plandetails für die nächste Ansicht, so dass Sie ihnen den Namen, die Beschreibung, den Preis usw. anzeigen können. Das Vorhandensein eines Plans wird nur an einem Ort (dh in der Datenbank) gespeichert. Wenn Sie nicht @plan
brauchen dann könnte man sagen:
if(!Plan.where(:id => params[:plan]).exists?)
...
end
Der wichtige Punkt ist, dass es genau eine Sache sein, die weiß, was die gültigen Pläne sind und jederzeit Sie brauchen, um über Pläne zu wissen, fragen Sie, dass eine Sache und nur diese eine Sache.
Die Ansicht, dass select_plan
auch die Datenbank (anstelle den wörtlichen Zahlen eins bis acht) verwenden würde Aufruf endet, um die gültigen Pläne zu erhalten:
<% Plan.order(...).each do |p| %>
whatever you need to display the plan as an option...
<% end %>
einen neuen Plan zur Datenbank hinzufügen und alles noch funktioniert . Entferne/deaktiviere einen Plan und alles funktioniert noch. Ihre Software wird einfacher zu warten sein, weniger Bugs haben, leichter zu verstehen sein, und Sie werden eine neue gute Angewohnheit und keine schlechte bekommen.
Woher kommen die gültigen Plannummern? Kommen sie aus einer Datenbank? Gibt es eine Konstante, die sie irgendwo definiert? Sind es magische Zahlen, die im gesamten Code verstreut sind? –
Ich frage, weil die Tatsache, dass Sie die "6 ist ein gültiger Plan" haben, nur in einer Controller-Methode oder an mehreren verschiedenen Orten sitzt, was Sie refaktorisieren müssen, nicht die umständliche Implementierung, die Sie in 'select_plan' haben. Beheben Sie das zugrunde liegende Problem und 'select_plan 'wird sich als Nebeneffekt aufräumen. –
@muistooshort - Bitte entschuldigen Sie meine Erfahrung. Die gültigen Plannummern sind in der Datenbank vorhanden. Ich bin daran interessiert, was Sie zu sagen haben. Ich bin mir nicht ganz sicher, ob du das meinst. –