I am quite new to ruby. I have coded in Java earlier and the code to
fire a query in ruby is a lot different and I am struggling.
I have this model
create_table "used_cars", :force => true do |t|
t.string "make"
t.string "model"
t.string "trim"
t.decimal "engine_size_cc"
t.string "bodytype"
t.decimal "doors"
t.string "fuel_type"
t.string "car_id"
t.string "colour"
t.decimal "price"
t.string "dealer"
t.string "town"
t.string "cap_car_id"
t.string "registration_no"
t.date "reg_year"
t.string "inc_options"
t.string "url"
t.datetime "created_at"
t.datetime "updated_at"
end
I need to generate an ad for the cheapest car..I know what query to
fire, but dont know what ruby syntax to use..I want to order it by
price...and then use different fields to print the ad.
I tried few things like
car_price = UsedCar.find_by_sql"SELECT price FROM used_cars"
or
car_price = UsedCar.find_by_price(true,true)
Also it will be really great if anybody can direct me to right study
material. I am reading agile web dev with rails and ruby cookbook. But
need to work hard on DB syntax.
Can anybody please help!
Thanks in advance :)
--
Posted via http://www.ruby-forum.com/.
but no luc k so far :(
Dakshata
puts "#{car_price[0]}"
I used the above syntax and it o/p s it as
merjis-mac-mini:seed_trademark dakshata$ rake db:seed
(in /Users/dakshata/source/learning-ruby/seed_trademark)
#<UsedCar:0x1a08628>
Any ideas???
Thanks
That will give you them all in descending price order so the first one
will be the most expensive. You could have called it cars rather than
car_price to indicate that it is an array (or similar) of Cars. If
you want them in price increasing you can say
cars = UsedCar.find(:all, :order => :price)
or to get just the cheapest
cheapest_car = UsedCar.find(:all, :order => :price).first
>
> puts "#{car_price[0]}"
puts car_price[0] would have done the same thing.
>
>
> I used the above syntax and it o/p s it as
>
>
> merjis-mac-mini:seed_trademark dakshata$ rake db:seed
> (in /Users/dakshata/source/learning-ruby/seed_trademark)
> #<UsedCar:0x1a08628>
If you want to see the individual fields then you need
cheapest_car.make and so on.
Why are you doing it in db:seed by the way?
Have a look at the Rails Guides at http://guides.rubyonrails.org/.
They are very useful. If you are following any tutorials make sure
they are for Rails 2.3 assuming that is what you are using.
Colin
That will still retrieve all the records. You want find :first, not
find :all.
Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org
Yes of course, my mistake. Though in fact rails could be clever
enough to work out from the statement find(:all).first that it only
needs to fetch the first one. There is a limit to the magic it can
sensibly perform however, and I was trying to push it beyond that
limit.
Colin
I have the impression that Arel may do things like that, but 2.x
ActiveRecord does not.
> There is a limit to the magic it can
> sensibly perform however, and I was trying to push it beyond that
> limit.
:)
>
> Colin
@Colin: I was using seed because I had just finished populating the DB
and was just trying to write the program in the seed to make running the
program easier, nothing particular. Now I have written and called the
method somewhere else.
The cheapest car thing works. Something else has arisen! I have the code
on the office machine. will post it on weekdays!
Thanks a lot for your help.
--
Posted via http://www.ruby-forum.com/.