2012-04-09 10 views
54

Zgodnie z konwencją Ruby on Rails, nazwy kontrolerów są pluralizowane, a nazwy modeli są pojedyncze. Przykład: kontroler użytkowników, ale model użytkownika.Konwencja Ruby on Rails w liczbie mnogiej (kontroler) i pojedynczej (model) - wyjaśnienie

rails generate controller Users 
rails generate model User name:string email:string 

Teraz otwórz plik migracji

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.string :email  
     t.timestamps 
    end 
    end 
end 

Tutaj nazwa tabeli jest w liczbie mnogiej (użytkowników).

Moje pytanie brzmi - dlaczego nazwa tabeli jest liczbą mnogą (użytkownicy), mimo że nazwa modelu jest pojedyncza (użytkownik)?

Odpowiedz

47

Rubinowa szyna zgodnie z językową konwencją. Oznacza to, że model reprezentuje jednego użytkownika, , podczas gdy tabela bazy danych składa się z wielu użytkowników.

+3

Więc jaka jest historia niestandardowych pluralizacj? Na przykład, jeśli mój model byłby "Aktywnością", czy stół byłby "Działaniami" lub "Aktywnościami"? – sak

+6

Byłoby to "Działania" metoda pomocnika railsowego "pluralize" jest bardzo sprytna. Wie, że liczba mnoga "osoby" to "ludzie" i tak dalej. http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-pluralize –

+2

Czy konwencja modeli pluralizacyjnych modelu Railsa zakłada, że ​​modele są napisane w języku angielskim? – duhaime

0

Ponieważ tabela zawiera użytkowników. To tylko konwencja.

12

Wystąpienie Twojego modelu User reprezentuje pojedynczego użytkownika, więc jest w liczbie pojedynczej. Natomiast tabela users zawiera wszystkich użytkowników, więc jest to liczba mnoga.

3

Aby zakończyć Emily odpowiedź

Instancja modelu użytkownika reprezentuje pojedynczego użytkownika, więc jest w liczbie pojedynczej. Natomiast tabela użytkowników zawiera wszystkich użytkowników, więc jest to liczba mnoga.

Sprawdź tę link o konwencji nazewnictwa Rails.

1

w szynach conntroller i nazwa tabeli są same w liczbie mnogiej, model jest w liczbie pojedynczej.W dwuskładnikowej nazwie drugie słowo jest pluralizowane!

Powiązane problemy