Atsitiktinio įrašo suradimas su ActiveRecord

Norint surasti atsitiktinį įrašą MySQL’e naudojame

[code]

SELECT * FROM products ORDER BY rand();
[/code]

Norint tą gražiai atlikti su ActiveRecord galime panaudoti

[code]

Product.find(:all, :order => ‘rand()’)

[/code]

Update: tas pats, bet PostgreSQL’ui
[code]

Product.find(:all, :order => ‘random()’)

[/code]

irb tab completion (windows)

Tam kad windows’ose irb pradėtu veikti tab completion reikia į irb.bat (esančio ruby/bin direktorijoje) įdėti eilutę

[code]

require “irb/completion”

[/code]

Upto, downto

Jau gan ilgą laiką dirbu su Ruby, o jis vis dar nenustoja stebinti.

Dirbant su Rails’u (ypač kuriant template’us) dažnai tenka įdėti besikartojančius dummy elementus (pvz. naujienos, meniu punktai ir pan.). Pats neefektyviausias būdas yra žinoma copy-paste. Kurį laiką naudojau kažką tokio:

[code]
< % (1..5).each do |i| %>
Dummy text
< % end %>
[/code]

ir jaučiausi kietas hakeris 😉

Tačiau kažkur giliai viduje žinojau, kad kintamasis “i” čia yra nereikalingas, jutau kad aš atvedžiau jį į gyvenimą, kuriame jam nėra skirta nieko nuveikti, visą laiką kol bus rašomas “Dummy text” gyventi su nepilnavertiškumo kompleksu ir galiausiai išnykti taip ir nepalikus jokio pėdsako šiame pasaulyje.

Tvirtai nusprendžiau daugiau nežaloti nekaltų sielų (nors ir skaitmeninių, gyvenančių vos kelias akimirkas) ir surasti būda kaip galėčiau apsieiti be jų. Ir toks būdas yra!

[code]
< % 1.upto 5 do %>
Dummy text
< % end %>
[/code]

Update: kaip ir buvo pažymėta komentaruose dar gėriau naudoti “times” (kas beje parašyta pačioje Agile Web Development with Ruby on Rails pradžioje =))
[code]
< % 5.times do %>
Dummy text
< % end %>
[/code]

Gera yra žinoti, kad pakeitei kažkam gyvenimą 😉