2012-05-21 24 views
2

我有以下表和相應的模型:如何與軌道追加到一個字符串上創建ID更新場

Orders 
ID|ORDER_REF|.... 

順序裁判的格式爲「ORDER#000-00」 + ORDER.ID問題是我需要啓用它,以便在插入時設置order ref。有沒有辦法做到這一點,而不必在插入後進行更新,我在這裏使用RoR。

+0

您是否使用表單來執行插入? – beck03076

回答

3

你真的需要數據庫中的數據嗎?最好的方法是在你的模型上只有一個方法,根據數據庫中的id返回所需格式的訂單參考。

class Order < ActiveRecord::Base 
    def order_ref 
    "ORDER#000-#{self.id.to_s.rjust(3, '0')}" 
    end 
end 

有了你可以做到這一點的Abobe:

order = Order.create(params[:order]) 
order.id #=> 12 
order.order_ref #=> "ORDER#000-012" 

如果需要在數據庫中的訂單參考,我建議使用after_create回調:

class Order < ActiveRecord::Base 
    after_create :generate_order_ref 

    def generate_order_ref 
    self.order_ref = "ORDER#000-#{self.id.to_s.rjust(3, '0')}" 
    save 
    end 
end 

確實插入後做了更新,但我沒有看到任何問題。