2011-11-15 55 views
1

我在控制檯中,我有一個名爲line的模型,其中有一個fontsize字段。Rails大容量更新

我想,這樣20-25之間的字體設置爲24和以上任何設置爲28和30年代的任何字體設置爲32

正常化我的字體大小如何去質量像這樣從控制檯更新我的數據庫?

回答

2

(我讀這是東西,你只希望做一次,所以我走了可讀性在性能或簡潔)

假設滑軌> 3,你的模型被稱爲Line(大寫「L」),你應該做以下事情:

Line.where(:fontsize => (20..25).each {|x| x.update_attribute :fontsize, 24) 
Line.where(:fontsize => (26..29).each {|x| x.update_attribute :fontsize, 28) 
Line.where(:fontsize => (30..39).each {|x| x.update_attribute :fontsize, 32) 
+0

非常感謝。 –

+6

有更好的辦法做同樣的事情,但速度更快: 'Line.update_all({:fontsize => 24},{:fontsize =>(20..25)})'等等 參見[http:// apidock.com/rails/ActiveRecord/Relation/update_all](http://apidock.com/rails/ActiveRecord/Relation/update_all) –

+0

@ MarkGuk的解決方案肯定會更快,但不會運行回調或驗證;這可能是也可能不是你想要的東西... – nickgrim