2011-07-21 55 views
1

我可以採用某些activeRecord模型的.save方法並向其添加功能嗎?我還想使用該功能中保存的項目的一些屬性擴展model.save方法Rails

我可以做類似的事嗎?

class Item < ActiveRecord::Base 
    def self.save 
     <added stuff for save> 
     <including some_other_id_from_this_item> 
    end 
end 

還是會破的東西?我怎樣才能真正訪問this_item.the_column_i_need?

回答

4

您應該使用ActiveRecords callbacks來擴展save的行爲。

隨着before_save鉤,你可以記錄之前訪問的數據被保存,例如更改輸入的電子郵件的情況下,你可以這樣做

class User < ActiveRecord::Base 
    before_save :downcase_email 

    def downcase_email 
    email.downcase! 
    end 
end 
0

使用回調aftet_save代替。訪問任何列只需屬性名稱如果你閱讀和self.db_column_name如果你需要改變它

+0

它幫助你嗎? – Anatoly