2011-10-27 272 views
0

我想重寫一個ActiveRecord模型的初始化,我只看到一件事,我無法理解那裏發生了什麼。我寫了這個初始化方法:設置ActiveRecord模型屬性

def initialize params={} 
    super params 
    @data = Date.strptime(params[:data], '%d/%m/%Y') if not params[:data].nil? 
    self.number = generate_contract_number(params[:unit]) if not params[:unit].nil? 
    self 
end 

鑑於generate_contract_number作品和Date.strptime也適用。我的問題是:爲什麼當我做self.number =號碼被設置,當我做@號碼=號碼沒有設置。但是,當我做同樣的@ contract_date =它的作品,並self.contract_date =自動設置?

感謝

回答

2

不覆蓋的ActiveRecord的initialize;使用after_initialize回調。請參閱this SO post

我沒有看到任何關於@contract_date的內容,所以我不確定你的意思。如果沒有模型定義,很難多說,我們不知道@data@contract_date是什麼,或者「工作」是什麼意思。請記住,ActiveRecord的數據庫屬性不是簡單的@型屬性。