Ruby on rails在运行时更改状态

时间:2012-06-04 05:43:19

标签: ruby-on-rails ruby database

我在rails 3.0.9中创建了一个应用程序...在该应用程序中,我有一个具有地址字段的表单。现在第一次如果用户输入地址字段(比如说“ABC”)状态应该是1,但是当另一个时间用户输入新地址(比如说“XYZ”)然后提交ts状态应该是1并且ABC状态应该是0 。
如果现在用户输入另一个地址说“PQR”并提交则其状态应为1且XYZ状态应为0,依此类推。
例如,数据库中有10个地址,前9个地址的状态为0,第10个地址为1.如果用户输入另一个地址,则第11个应为1,第10个应为0。 我不知道如何在表格中改变运行时的值......

1 个答案:

答案 0 :(得分: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指出的那样,您可能需要重新考虑如何在应用程序中使用地址,并简单地获取最近更新的地址,而不是更新表的每个字段。