Введите значения A и B, затем C = A + B, сохраните A, B, C в базе данных.Обновите значение A или B, чтобы обновить сумму C в базе данных. - PullRequest
0 голосов
/ 27 октября 2010

Просто, чтобы упростить мой вопрос здесь: Обновлять геокод широту и логитуру при каждом обновлении адреса

Я хочу сделать это:

Два поля ввода для ввода пользователем значенийдля 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 ]

1 голос
/ 27 октября 2010

в вашей модели

 before_save :calculate_c

 def calculate_c
    self.c = self.a + self.b
 end
1 голос
/ 27 октября 2010

Я могу!

Ключом являются обратные вызовы.Это обновит C перед сохранением объекта.

before_save :update_c

def update_c
  self.c = a + b
end
0 голосов
/ 27 октября 2010

Я бы сказал, что это дизайнерский запах.Если значение C всегда равно A + B, то нет необходимости хранить его в базе данных вообще.Либо код, который извлекает A & B, может выполнить вычисление, либо подходящий запрос к базе данных может извлечь A & B и вычислить значение C, прежде чем вернуть все три к вызывающему коду.& B - это широта и долгота, а C - это адрес, я могу ошибаться.

0 голосов
/ 27 октября 2010

простите, что спросили, но зачем хранить С в первую очередь? Разве наличие под рукой a и b не всегда удовлетворяет c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...