本周碰到了一個問題式散,需要重寫model的字段的get方法汉匙,但在重寫方法中涤姊,某些情況需要獲取該字段原來的值(數(shù)據(jù)庫中值),本來想使用alias先給方法起個別名镣衡,然后在重寫方法中調(diào)用別名霜定,結(jié)果報錯吞琐,這才想ActiveRecord的方法是動態(tài)生成的,定義的時候沒有該字段的get方法然爆,詢問bruce.wu站粟,給出使用model[:attribute]可獲取數(shù)據(jù)庫中值的解決辦法。
平時查文檔感覺rails guide最方便使用曾雕,而rails guide對ActiveRecord 的attributes介紹不多奴烙,因此總結(jié)下這方面的用法備忘。
- model.attributes獲取實例的所有屬性的hash形式
- model.attributes= 傳入hash設(shè)置實例的相應(yīng)屬性.
- model[:attribute]獲取單個屬性的值剖张,注意:這里需要symbol
- model.attributes[attribute] 同上切诀,但attribute為字符串
- model.changed 返回實例是否發(fā)生變化
- model.attribute_changed? 實例的該字段是否發(fā)生變化
- model.new_record? 實例是否為新添加對象(非數(shù)據(jù)庫中記錄)
- model.changes 返回發(fā)生變化字段的hash,形式為attribute:[原內(nèi)容,現(xiàn)內(nèi)容]