after_create обратный вызов не работает правильно - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть следующий код с информацией журнала. Значение global_id установлено в attr_accessible

Этот работает

код:

Location.update(model[:id],:global_id => gi[:id])

log

before location save
  Location Load (0.3ms)  SELECT `locations`.* FROM `locations` WHERE `locations`.`id` = 280 LIMIT 1
 (0.3ms)  UPDATE `locations` SET `global_id` = 11490, `updated_at` = '2012-02-16 04:48:17' WHERE `locations`.`id` = 280
after location save

Это не так, и я не уверен почему. Любые идеи:

код:

User.update(model[:id],:global_id => gi[:id])

log:

here is more info
 here i am and I am a user
 User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 31 LIMIT 1
  (0.3ms)  SELECT 1 FROM `users` WHERE (`users`.`email` = BINARY 'jj@jxx.com' AND `users`.`id` != 31) LIMIT 1
after my user update

Есть идеи, почему этот второй не работает?

ТНХ

edit # 1 Обе модели имеют это:

after_create SaveGlobalInfo

с этим классом:

class SaveGlobalInfo < ActiveRecord::Base
  def self.after_create(model)
    gi=GlobalIdentification.create()
    if (model.class.name=='Location')
      puts "before location save"
      Location.update(model[:id],:global_id => gi[:id])
      puts "after location save"
    elsif (model.class.name=='User')
      puts "here i am and I am a user"
      User.update(model[:id],:global_id => gi[:id])
      puts "after my user update"
    end

1 Ответ

3 голосов
/ 16 февраля 2012

Если бы мне пришлось угадывать, это потому, что вы не проходили какую-то проверку.Тест, выполняемый со вторым вызовом SQL, должен гарантировать уникальность вашего поля email.Что, если это не удается и запись не может быть сохранена?

Это особенно странно:

after_create SaveGlobalInfo

Вы можете создавать вспомогательные классы для обратных вызовов, но я никогда не видел ихактуальные модели ActiveRecord ранее.Может быть, вы хотите определить модуль?

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