siDDis Skrevet 16. mars 2007 Skrevet 16. mars 2007 Eg har ein tabell som ser slik ut: id, first_name, last_name, email Eg har tenkt å hente alle radene av bare first_name og last_name Men korleis blir syntaxen for dette? person = Person.find..... EDIT: person = Person.find_by_sql("SELECT first_name, last_name FROM personer") Ser ut til å fungere, men er dette ein god måte? Og det som kjem til person blir eit hash ikkje sant? Sånn at det vil sjå for eksempel slik ut? person = {"truls" => "olsen", "per" => "gunnar"}
blacktower Skrevet 16. mars 2007 Skrevet 16. mars 2007 >> Location.find(:first, :select => 'name') => #<Location:0xb14d6b2c @attributes={"name"=>"Cambridge"}> Dette returnerer et fullt ActiveRecord object, hvor bare disse attributene er satt. Dersom du ønsker å lagre objektet etter å ha gjort endringer må du ha med id: >> Location.find(:first, :select => 'id, name') => #<Location:0xb14d2ea0 @attributes={"name"=>"Cambridge", "id"=>"2"}>
siDDis Skrevet 16. mars 2007 Forfatter Skrevet 16. mars 2007 men :first returner bare første rad ikkje sant? Så om eg bruker .find(:all, :select => 'first_name, last_name') Så vil den returnere alle radene i desse to kolonnene?
blacktower Skrevet 16. mars 2007 Skrevet 16. mars 2007 Ja, dvs, den vil returner alle radene (som AR objekter) inneholdene disse to kolonnene. Forøvrig er det veldig lett å finne ut akkurat hva som skjer dersom du blir venn med konsollen: sqaweb:/srv/www/sqaweb # ruby script/console Loading development environment. >> require 'pp' => ["PP"] >> PP.pp Location.find(:all, :select => 'name') [#<Location:0xb167a1cc @attributes={"name"=>"Cambridge"}>, #<Location:0xb167a1b8 @attributes={"name"=>"Maidenhead"}>, #<Location:0xb167a190 @attributes={"name"=>"Blackburn"}>, #<Location:0xb167a168 @attributes={"name"=>"Trace"}>, #<Location:0xb167a140 @attributes={"name"=>"Bangalore"}>] => #<IO:0xb7ca1000> >> Her kan du se vi fikk en array som inneholder 5 AR objekter, hvor attributten name er satt. (PP (Pretty Print) er bare en modul som prøver å skrive ut objekter på en mest mulig menneskevennlig måte.)
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå