2011-01-13 6 views
4

Ich benutze Ruby on Rails, um eine Website für ein Spiel zu erstellen, das ich spiele.Ruby on Rails Inflection Problem

Ich habe ein User Modell und ein Starbase Modell. Die Beziehung, die ich zu installieren versuche, ist wie so

class User < ActiveRecord::Base 
    has_many :starbases 
end 

class Starbase < ActiveRecord::Base 
    belongs_to :user 
end 

Allerdings, wenn ich Skript/Konsole öffnen und versuchen, die Benutzern den Zugriff auf Starbases es mir einen Fehler gibt: NameError: uninitialized constant User::Starbasis.

Es scheint, als ob es ein Problem mit Flexion und Schienen ist nicht pluralisierende Sternenbasis richtig.

Ich habe versucht, dies auf die inflections.rb im Initialisierer Ordner hinzufügen:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural 'starbase', 'starbases' 
end 

aber es löst noch nicht das Problem. Könnte jemand Ratschläge geben, wie man das funktioniert?

Cheer

Eef

+0

Nicht sicher, aber nicht diese Änderung erforderlich ein Server-Rest Kunst? – Warren

Antwort

5

Haben Sie versucht, eine Linie für die inverse Wende Zugabe (dh 'Singular'):

inflect.singular "starbases", "starbase" 

ich dein Beispiel in meiner Konsole versucht, und es war die Vereinzelung das verursachte Probleme, nicht umgekehrt. Ich bin mir nicht sicher, ob das andere Probleme (wie Routen) behebt, aber es sollte die einfachen Sachen reparieren (denke ich).

+0

Hey, ich habe das versucht, aber leider bekomme ich immer noch den gleichen Fehler. – RailsSon

+1

Hey, ich habe es funktioniert mit flex.irregular "Starbase", "Starbases". Markieren Sie Ihre Frage als richtig. Prost für die Antwort. – RailsSon

+0

Das war mein nächster Vorschlag, aber es funktionierte bei meinem Setup, wie ich es vorgeschlagen hatte, also wollte ich das Problem nicht verwirren. Nette Arbeit ... – Nuby

0

Kleiner Trick, den ich abgeholt habe, um zu überprüfen, wie Active Support meine Klassennamen und/oder Modulnamen vereindeutigen oder pluralieren könnte.

Lassen Sie Ihren Rails-App-Server laufen und geben Sie in einer neuen Registerkarte Ihre Rails-Konsole ein, indem Sie rails console eingeben. Dort können Sie leicht nach dem richtigen Stil für Ihre Namen suchen.

langer WegActiveSupport::Inflector.pluralize "fish" # => "fish"

kurzen Weg"fish".pluralize # => "fish"

können Sie weitere Beispiele finden hier

https://github.com/rails/rails/blob/master/activesupport/test/inflector_test_cases.rb