10/07/2006

為你的 Active Record 做出多采多姿的 find

Jamis Buck 提出了一個好範例
教導我們如何簡單的製作出一個可以隨機取出 entry 的 Active Record

class Thing < ActiveRecord::Base
def self.find(*args)
if args.first.to_s == "random"
ids = connection.select_all("SELECT id FROM things")
super(ids[rand(ids.length)]["id"].to_i)
else
super
end
end
end
之後你就可以這樣使用
Thing.find('random')
他就會隨機取出任一個 entry

有了這個範例,其實我們可以依照您的需求,特別訂做出多采多姿的find~~~

1 則留言:

大鳥 提到...

怪怪的,資料庫有一千萬筆資料這樣不就要拉一千萬筆id出來? @@
取得count然後再order by id, offset給個不大於count的亂數值

這樣會不會好點?