所以我有這樣一行:紅寶石檢測某列的值發生了變化
if self.company_changed?
它工作正常,但這種檢測,如果該公司已在對象上發生變化。我需要知道數據庫值是否已更改,而不是內存中的值是否已更改。所以,我想這一點:
if :company_changed?
這似乎在調試模式下工作時,我只執行一條線。如果讓它運行,它會在無限循環測試中失敗。
我的問題是可以在ruby中使用什麼來檢查列值是否實際發生了變化。
所以我有這樣一行:紅寶石檢測某列的值發生了變化
if self.company_changed?
它工作正常,但這種檢測,如果該公司已在對象上發生變化。我需要知道數據庫值是否已更改,而不是內存中的值是否已更改。所以,我想這一點:
if :company_changed?
這似乎在調試模式下工作時,我只執行一條線。如果讓它運行,它會在無限循環測試中失敗。
我的問題是可以在ruby中使用什麼來檢查列值是否實際發生了變化。
我很確定你實際上在談論ActiveRecord。在這種情況下,您需要重新獲取記錄以查看數據庫中的值是否已更改。
self.class.find(self.id).company != self.company
這種通用方法可能是這樣的:
def attr_changed_in_db?(attr)
self.class.find(self.id).attributes[attr] != self.attributes[attr]
end
你的問題很不清楚。什麼是專欄?你使用的是MySQL的寶石?你正在使用Rails或其他? 'if:ads'永遠是真的。請考慮你的問題,並從頭開始解釋。 – fotanus 2013-05-09 14:43:24
我很困惑。 (你可以顯示'company_changed?'的方法嗎?是基於ROR的,然後標記爲'ROR' – 2013-05-09 14:43:26
這是一個ROR方法,列是公司,company_changed?是由活動記錄產生 – joncodo 2013-05-09 14:44:59