rails中髒資料的使用

2021-08-23 13:41:05 字數 764 閱讀 4431

在啟用了髒資料(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....