42

Podejmuję się nazywania całkiem poważnie, więc myślę, że bardzo trudno o dobre nazwy dla moich modeli ActiveRecord. Jednak często wymyślam nazwę i ma ona pewien konflikt z zastrzeżoną nazwą, albo w bazie danych, albo w Ruby lub Rails. Nazwy modeli lub pól, takie jak set lub group. Czasami problem nie jest od razu widoczny. Czy istnieje lista nazw, których nie możemy użyć w nazwach naszych modeli i lista nazw pól?Zastrzeżone nazwy z modelami ActiveRecord

+5

[ta strona ma niektóre z nich] (http://en.wikibooks.org/wiki/Ruby_on_Rails/ActiveRecord/Naming) Ale ja mam "udało się znaleźć wyczerpującą listę. Może być coś fajnego, żeby zacząć wiki. – Magicmarkker

Odpowiedz

42

Oto kilka środków na początek:

  1. Rails reserved words. Ta wydaje się dość aktualna, ostatnia aktualizacja z lutego 2010 roku. Nawet wykracza poza szyny i zawiera listę typowych konfliktów nazewniczych z SQL.dead
  2. Reserved words in rails. Tutaj znajduje się aplikacja heroku z możliwym do przeszukiwania zestawem zarezerwowanych słów. Zawartość tego wydaje się być zarządzana przez użytkowników, więc każdy z kontem może dodać nowe słowo.
+2

o człowieku ... teraz wydaje się, że każde słowo jest brane! Będę musiał nazwać moje modele z prefiksem lub postfiksem; 'ScottCube' lub' Cube2'! –

+1

Co oznacza "Original Rails Wiki" w tej tabeli? –

2

Otwórz konsolę szyny i rodzaj MyModel.methods

Wszystkie metody wymienione są zarezerwowane słowa.

+4

Może to prowadzić do fałszywych alarmów. Istniejące metody i nazwy kolumn będą wyświetlane jako pierwsze, aby założyć, że cały czas używają zastrzeżonego słowa. – Substantial

+0

@gg_s Łatwo sobie z tym poradzić, jeśli masz inny model bez wątpliwej kolumny – MCB

+1

Lub po prostu wykonaj ActiveRecord :: Base.methods ... –

5

Nazwa kolumny type jest również zastrzeżona i nie jest wyświetlana na liście MyModel.methods!

The single-table inheritance mechanism failed to locate the subclass: 'f'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Project.inheritance_column to use another column for that information.

Czy ktoś ma doświadczenia z nazwami takimi jak category, class, transaction, group, itd.? Wszystko przychodzi mi na myśl, kiedy kategoryzuję dane w ramach mojej db ....

Powiązane problemy