2010-06-24 3 views
52

Mögliche Duplizieren:
Naming Boolean columns in RailsRails Boolesche Felder: `is_foo` oder nur` foo`?

Was ist die Schienen-Konvention über Namen von Booleschen Felder?

Zum Beispiel, wenn ich ein User Modell, das eine Flagge für seine „active“ muss, sollte ich nenne das db Feld is_active oder active?

Hinweis: Rails generiert automatisch Frage-markierte Methoden für den Zugriff auf boolesche Felder: User.is_active? und User.active?.

Antwort

59

Die Klaradjektivform ist leicht die Norm in Ruby und Rails - even?, nil?, empty? und blank? zum Beispiel. Die einzige Methode des Formulars is_#{something}?, die ich mir vorstellen kann, ist Kernel#is_a?, um die Klassenidentität zu bestimmen. Um also mit den Standard-Namenskonventionen zu bleiben, würde ich die is_ für boolesche Methoden wie diese weglassen.

+0

danke ich schätze deinen Kommentar. Ich glaube jedoch, 'is_xxx' wird für meine Anwendung besser geeignet sein. Ich bin auf einen Booleschen namens "is_client" gelaufen. Wenn ich es durch "client" ersetze, sieht es wie eine ActiveRecord-Assoziation aus (obwohl ich kein Client-Modell auf meinem Design habe ... vorerst). – kikito

+6

Ich denke, was Chuck hier entgangen ist, ist die Aufnahme des Fragezeichens. Es wäre "client" (einschließlich des Fragezeichens), nicht "client" oder "is_client". Das Präfix is ​​ist für Sprachen, die das Hinzufügen eines Fragezeichens zum Namen nicht unterstützen. Um es zu definieren, ist einfach: 'def client? ... end' – PhilT

+4

Auch Rails erzeugt entsprechende Methoden für boolesche Werte. Wenn Sie also ein Feld namens client haben, das ein boolescher Wert ist, dann wird Rails eine Methode namens 'client?' Für dieses Modell erstellen, mit der Sie überprüfen können, ob es gesetzt ist. – PhilT

7

Von den 2 sollten Sie diejenige wählen, die für Sie besser klingt: User.active? oder User.is_active?

Ich würde persönlich für die ehemalige entscheiden.

Das Fragezeichen kommt von Ruby, nicht von Rails.

+0

Sie gaben mir die Lösung für mein Problem - ich benutzte das, was ich für richtig hielt ('is_client'). Chuck jedoch beantwortete die Frage - Rails (und Ruby) scheinen das einfache Adjektiv zu bevorzugen. Ich würde die Antwort zwischen euch beiden teilen, wenn ich könnte. Ich kann dir nur +1 geben und danke. Danke auch für die Hinweise zum Fragezeichen - ich wusste nicht, dass es von Ruby selbst stammt. – kikito

+0

Ich hasse wirklich "Folge deinem Herzen" Antworten. Nicht-Antworten, wirklich. – Arcolye

+1

Ich wähle das spätere als das ehemalige. User.active für mich könnte ein benannter Bereich sein. Für mich ist es nur klarer, dass .active ein Bereich ist und .is_active ein Boolescher Wert ist. Ja hast du das? auf der Methode, aber: User.active, user.active ?, user.is_active? - Der letzte ist einfach kontextuell zu erkennen, imho. –

Verwandte Themen