2011-06-30 13 views
0

次の問題があります: 私は2つのデータベース:mynot my(それを"hammas"と呼んでいます)があります。だから私のhammas私はemailorg_unit_idフィールドのマネージャーと呼ばれる1つのテーブルがあります。そしてmyデータベースでは、私はemailunit_idというユーザーフィールドを持っています。(別のテーブルから)テーブルを更新するには?

すべてがクリアですか?私は嬉しい。そう、次は動く。

私はこのコードを持っている:私は私のテーブルにメールやorganisational_unit_id&ペーストを得るhammasからSO

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 

を。

EVERYHING'S WORKS素晴らしいです!

しかし、"hammas"の管理者が(誤ってまたは特別に)行を削除しても、私のデータベースはこの行を保持しています(手動で削除する必要があります)。どのように私に自動的にチェクます 行が削除された場合

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

ありがとうございます!

+0

つまり、対応するユーザーが作成された後にhammas_managerが削除された場合、そのユーザーを削除するにはどうすればいいですか? – mark

+0

はい、hammas_managerでこのユーザーが削除された場合、MY DB内のユーザーを削除する方法 –

+0

hammas_managersに由来していないユーザーがいますか? – mark

答えて

2

は、それがhammas_managerを削除したときに今、あなたのアプリケーションが自動的にユーザーを削除する必要があります

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

をhammas_managerするために、ユーザー

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

とこれにこれを追加します。あなたは、コンソールでこれを実行することができます「クリーンアップ」以前に孤立ユーザー(つまりなしHM)することがあります場合は

(上記のような関係を定義した):

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

これは非常にテストされていません運用データ上で実行しないでください。

+0

ありがとうございます!私はこれをテストします。私はコンソールでこのwrtieを傾ける=> User.all.each {| u | u.destroy if u.hammas_manager.blank?} ...いくつかの間違いu.destroy:コマンドが見つかりません –

+0

とこの1つ:不明なキー:local_key(ArgumentError) –

+0

ちょっと、この作業は最後ですか? – mark

関連する問題