siDDis Skrevet 16. mars 2007 Del 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"} Lenke til kommentar
blacktower Skrevet 16. mars 2007 Del 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"}> Lenke til kommentar
siDDis Skrevet 16. mars 2007 Forfatter Del 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? Lenke til kommentar
blacktower Skrevet 16. mars 2007 Del 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.) Lenke til kommentar
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å