如何更新表(从另一个)?

时间:2011-06-30 09:17:29

标签: ruby-on-rails

有下一个问题: 我有两个数据库:mynot my(称之为"hammas")。因此,在我的hammas我有一个名为经理的表格,其中包含emailorg_unit_id字段。在my数据库中,我有一个名为emailunit_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"某个管理员删除(意外或特殊)行,那么我的数据库仍将保留此行(我必须手动删除它)。如何自动制作chek: 如果删除了行

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

谢谢!

1 个答案:

答案 0 :(得分:2)

将此添加给用户

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时会自动删除用户。

如果您可能想要“清理”以前孤立的用户(即没有h.m),您可以在控制台中运行它(已经定义了上述关系):

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

这是未经测试的,因此不要在生产数据上运行它。