2012-06-04 17 views
0

我在rails 3.0.9中創建了一個應用程序...在那個應用程序中我有一個有地址域的窗體。現在第一次,如果用戶輸入地址字段(比如「ABC」),狀態應該是1,但是當另一個時間用戶輸入新地址(比如說「XYZ」),然後提交ts狀態應該是1並且ABC狀態應該是0
如果現在用戶輸入另一個地址「PQR」並提交,則其狀態應爲1,並且XYZ狀態應爲0等等。
例如,數據庫中有10個地址,前9個地址的狀態爲0,第10個爲1.如果用戶輸入另一個地址,則第11個應爲1,第10個應爲0.
我不知道如何在表中運行時更改值...Ruby on rails改變運行時的狀態

+1

你爲什麼要這樣做?你想跟蹤有效/無效地址版本嗎?如果是這樣,爲什麼不簡單地爲包含時間戳的地址使用「created_at」字段?根據時間戳,您可以選擇最新的,因此「有效」的地址。 – emrass

+0

其實它是一個非常大的項目,我所要求的僅僅是模塊的一部分......我想要的是,如果在數據庫中添加任何新地址,則會有一個地址,其狀態必須爲1,而其餘地址狀態必須爲是0 ....我的意思是每當新用戶輸入地址,並提交它的狀態將是1,其餘將是0 ....是否我必須使用一些條件,如果當前用戶然後狀態1,這樣的事情? ???????? – 20911141

回答

0

這可以通過ActiveRecord's update_all method完成。只需在您的模型中定義的回調:

before_create :update_address_statuses 

def update_address_statuses 
    MyModel.update_all("status = 0") 
    self.status = 1 
end 

然而,正如blackbird07指出的那樣,你可能需要重新考慮如何你在你的應用程序中使用的地址,並簡單地獲取最近更新的地址,而不是每次更新一張桌子的領域。

+0

非常感謝你們兩位....保存我的一天......再次感謝....! – 20911141