Как обновить таблицу (из другой)? - PullRequest
0 голосов
/ 30 июня 2011

Возникла следующая проблема: У меня есть две базы данных: my и not my (назовите это "hammas"). Так что в моем hammas у меня есть 1 таблица, называемая менеджерами с полями email и org_unit_id. И в базе данных my у меня есть поле с именами пользователей с email и unit_id.

Все ясно? Я рад. ТАК, следующий ход.

У меня есть этот код:

user_emails             = User.find(:all).collect {|r| r.email }

    hammas_managers.each do |email, org_unit_id|
      if !user_emails.include?(email)
        User.create(:email => email, :user_group_id => organisational_unit_id)
      end
    end

ТАК из Хаммаса я получаю электронные письма и organisational_unit_id и вставляю в мой стол.

ВСЕ РАБОТЫ. SUPERB!

Но мне нужно: если в "hammas" какой-то администратор удалил (случайно или специально) строку, поэтому моя база данных все еще будет хранить эту строку (и я должен удалить ее вручную). Как сделать чек автоматически: если строка удалена

blah blah blah code
User.destroy(:id => ... ) or how?

Спасибо!

1 Ответ

2 голосов
/ 30 июня 2011

Добавьте это к пользователям

has_one :hammas_manager, :foreign_key => :email, :local_key => :email, dependant => destroy

и это к hammas_manager

belongs_to :user, :foreign_key => :email, :local_key => :email, dependant => destroy

Теперь ваше приложение должно автоматически удалять пользователей, когда оно удаляет hammas_manager.

ВВ случае, если вы захотите «очистить» ранее осиротевших пользователей (т.е. без хм), вы можете запустить это в консоли (определив отношения, как указано выше):

User.all.each{|u| u.destroy if u.hammas_manager.blank?}

Это не проверено, поэтому не запускайтеэто по производственным данным.

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