Команда для генерации c = "a + b" в консоли, когда 1000 значений "a" и "b" добавлены в MySQL вручную - PullRequest
0 голосов
/ 05 ноября 2010

В моей базе данных три столбца:

a = значение b = значение c = a + b

Пользователь обычно вводит a и bв форме, а значение сохраняется в базе данных.c будет рассчитываться моделью.

В моей модели:

class Calculate < ActiveRecord::Base
  before_validation_on_create :update_c
  before_validation_on_update :update_c

  def update_c
    if !a.blank? && !b.blank?
      self.c = a + b
    end
  end
end

Просто пример кода выше.Так что c генерируется каждый раз, когда пользователь нажимает «Сохранить».

Теперь я администратор, и я заполнил 1000 значений для a и b, используя phpMyAdmin CSV import:

id=1, a=4, b=7, c=
id=2, a=1, b=6, c=
id=3, a=3, b=2, c=
.
.
.

Вопрос на миллион долларов:

Как лучше всего это сделать в консоли или где-то еще, чтобы поручить Rails генерировать C для всех 1000 записей?

Спасибо!

ОБНОВЛЕНИЕ 1:

На самом деле c = a + b не так просто в моем коде.Возьмите geocode_address как c, address_geo как a, b, вот полный код:

def geocode_address
if !address_geo.blank?
  geo=Geokit::Geocoders::MultiGeocoder.geocode(address_geo)
  errors.add(:address, "Could not Geocode address") if !geo.success
  self.lat, self.lng = geo.lat,geo.lng if geo.success
end

end

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Я бы просто подключился к MySQL напрямую (или запустил SQL через phpMyAdmin), чтобы выдать оператор обновления.

Я предполагаю, что вы хотите обновить ВСЕ записи.

UPDATE table SET c = a + b;

Это сделает это для вас, красиво и быстро.Полагаю, вы знаете, как называется таблица, я не знаком с Rails.Я не думаю, что вам нужны Rails для этого.

0 голосов
/ 05 ноября 2010

Попробуйте это:

Calculate.update_all("c = a+b")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...