输入值A和B,然后输入C = A + B,将A,B,C存储在数据库中。更新值A或B将更新数据库中的总和C.

时间:2010-10-27 14:45:05

标签: ruby-on-rails

这里只是为了简化我的问题:Update Geocode latitude and logitude everytime address is updated

我想这样做:

两个输入字段供用户输入A,B的值。保存时,值A和B保存到数据库中。在数据库列中,有一列C,动态C = A + B。

首先保存:

A = 1 B = 2 C = A + B = 3

然后,当用户更新A和B的值时,C也会动态更改并替换数据库中的新和值。

A = 2 B = 2 现在C将计算:C = A + B = 4

现在值C是4而不是3。

任何人都可以在Rails中写这个东西吗?感谢。

4 个答案:

答案 0 :(得分:1)

我可以!

关键是回调。这将在保存对象之前更新C.

before_save :update_c

def update_c
  self.c = a + b
end

答案 1 :(得分:1)

在你的模特中

 before_save :calculate_c

 def calculate_c
    self.c = self.a + self.b
 end

答案 2 :(得分:0)

请原谅我,但为什么要把C存放在第一位?不会有a和b总是满足c?

答案 3 :(得分:0)

我会说这是一种设计气味。 如果C的值始终为A + B,则根本不需要将其存储在数据库中。 检索A& A的代码。 B可以进行计算,或者合适的数据库查询可以获取A& B并计算C的值,然后将所有三个返回到调用代码。

但是,考虑到A& B是纬度&经度和C是和地址,我可能是错的。