Gå til innhold

Anbefalte innlegg

Hei.

 

Sliter med en liten ting i RoR. Har en tabell i en database som heter Status. Jeg skriver i en controller:

 

@recover = Status.new

@recover.username = params[:username]

 

Når jeg da går til siden som skal vises får jeg melding om at tabellen Statuses ikke eksisterer. Jeg sier ingenting om at den skal finne noe i en tabell kalt statuses, det jeg ber om er at den skal finne noe i Status. Noen som vet hvorfor rails har bestemt seg for å plusse på noen ekstra bokstaver?

 

:thumbdown:

Lenke til kommentar
Videoannonse
Annonse

Nå er ikke jeg noe ekspert i RoR, og driver ikke med det til daglig, men...

 

Så vidt jeg husker så er dette endel av "naming convetion" til RoR.

 

Hvis du har en model som heter Status, så ser den etter en tabel som heter "Statuses" dette fordi det i denne tabellen ligger lagret flere status'er, altså flertall.

 

Her kan du lese mer om active records i RoR.

http://ar.rubyonrails.org/

 

Automated mapping between classes and tables, attributes and columns.

class Product < ActiveRecord::Base; end

...is automatically mapped to the table named "products", such as:

CREATE TABLE products (
  id int(11) NOT NULL auto_increment,
  name varchar(255),
  PRIMARY KEY  (id)
);

...which again gives Product#name and Product#name=(new_name)

Lenke til kommentar

Tror jeg anbefaler deg å lese igjennom <a href="http://guides.rubyonrails.org/" target="_blank" rel="nofollow">http://guides.rubyonrails.org/</a> for å få en liten oversikt over Rails før du begynner å jobbe da du tydeligvis har gått glipp av en av de mest grunnleggende konvensjonene i Rails. Dersom du absolutt <i>må</i> kalle tabellen din status, noe jeg relativt sterkt fraråder, tror jeg du kan overskrive dette ved å sende inn tabellnavnet til set_table_name klassefunksjonen. Men igjen, ikke gjør dette; lag heller en ny migreringsfil og gi nytt navn på tabellen din.

 

Apropos koden syntes jeg kontrollerkoden din kanskje ser noe tungvindt ut og. Det er i alle fall relativt vanlig putter alle parametere relatert til for eksempel status modellen inn i en egen nestet hash i params. Dette gjør form_for hjelperen automatisk for deg når du bruker denne. Med andre ord ender du opp med for eksempel params[:status][:username]. Vi får da:

 

# Gammel kode
@recover = Status.new
@recover.username = params[:username]

# Ny kode
@recover = Status.new(params[:status])

Endret av luxus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...