在啟用了髒資料(dirty objects)後,有時候一些不通過writer的修改是不會存到資料庫裡的。
比如以下**:
self.org_common_flag[common_flags[:agent_flag]]= self.agent_flag ? "0" : "1"
實際上已經修改了字串中某個字元了,但是因為不通過writer的呼叫,dirty的標記還是沒變。檢視:
[quote]
>> u.org_common_flag_changed?
=> false
[/quote]
一定要強制加乙個will_change!,就會標誌已修改。
self.org_common_flag_will_change!
self.org_common_flag[common_flags[:agent_flag]]= self.agent_flag ? "0" : "1"
檢視一下:
[quote]
>> u.org_common_flag_changed?
=> true
[/quote]
髒資料減少了大量的無關資料 update,也帶來了一些不方便,這就要求更好的測試覆蓋。
除錯的時候注意使用 _changed? , _change 的方法來檢查是否觸發髒資料。並且觀察日誌裡的sql輸出和檢查資料庫內容。
rails中的select下拉列表使用
最近在rails開發中有用到下拉列表的元素,用來描述和區分使用者的型別.型別包括 學生,值為stu,教師,值為tea,該資訊儲存在user type中,user types 學生 stu 教師 tea freeze view層 為 型別 options 請選擇型別 student user type...
Rails中scopes的幾種使用方法
不傳引數使用scope方法 class user activerecord base scope finduser,scope has content,end 傳引數使用scope方法 class user activerecord base scope finduser,username scop...
Rails 中如何使用全域性變數?
在 rails 中使用全域性變數方式如下 config environment.rb中,如 site name 天天筆記 site url www.ttbiji.com 如何你希望在不同環境中區分全域性變數,則可以將其配置到以下檔案中 config environments development....