重新关联Rails中的所有相关模型

MoDiggity

好吧,我们f&^%$ **&起来了。

我们丢失了一堆用户记录。在某个时候,运行了一个集成文件,该文件重新插入了一些丢失的记录。

问题在于新用户的ID与原始用户的ID不同,因此旧用户ID的所有现有相关内容已被孤立。现在,我需要返回并将所有孤立的东西重新关联到新的用户ID。仅从备份中为新用户提供旧ID是不够的,因为将有新内容与新User ID相关联。

我们知道reflect_on_all_associations方法,但是很难找到东西。但是,这可能是某种脚本的起点。

关于如何使方法基于关联而返回与特定模型相关的所有模型的任何线索,而不必指定或不知道那些关联?

ju

这是使用reflect_all_associations的一种方法:您可以遍历关联,仅选择has_many和has_one,然后更新这些记录。这是一个帮助程序类,可以通过调用AssociationFixer.new(user_to_destroy,original_user_id).fix_associations来执行该工作:

class AssociationFixer
  USER_ASSOCIATIONS = User.reflect_on_all_associations

  def initialize(user_to_destroy, original_user_id)
    @user_to_destroy = user_to_destroy
    @original_user_id = original_user_id
  end

  def fix_associations
    USER_ASSOCIATIONS.each do |association|
      next if association.options.has_key? :through
      if association.macro == :has_many
        fix_has_many(association)
      elsif association.macro == :has_one
        fix_has_one(association)
      end
    end
  end

  def fix_has_many(association)
    @user_to_destroy.send(association.name).each do |record|
      if association.options.has_key? :foreign_key
        record.send(assignment_method(association.foreign_key), @original_user_id)
      else
        record.user_id = @original_user_id
      end
      record.save
    end
  end

  def fix_has_one(association)
    if association.options.has_key? :foreign_key
      @user_to_destroy.send(association.name).send(assignment_method(association.foreign_key), @original_user_id)
    else
      @user_to_destroy.send(assignment_method(association.name.user_id), @original_user_id)
    end
    record.save
  end

  def assigment_method(method_name)
    method_name.to_s + '='
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将所有模型关联在Rails上的ruby中

来自分类Dev

如何更新 Rails 中的所有关联模型?

来自分类Dev

获取Rails中模型类型的所有记录的所有关联数据?

来自分类Dev

Django:如何返回与ForeignKey相关联的所有模型,包括这些模型的所有属性?

来自分类Dev

模型具有所有关联的Rails

来自分类Dev

模型具有所有关联的Rails

来自分类Dev

获取Django中的所有相关模型类

来自分类Dev

在laravel中查询相关模型中表的所有内容

来自分类Dev

如何获取与Django中的User相关联的所有相关对象?

来自分类Dev

如何在Rails中不直接相关的2个模型之间建立关联?

来自分类Dev

验证Rails中的关联模型

来自分类Dev

从关联的模型(表)中查找具有至少一个关联的所有记录

来自分类Dev

在Rails中显示所有关联的记录信息

来自分类Dev

获得所有has_many关联在rails中

来自分类Dev

构造新的Django模型对象,而无需将所有相关模型加载到内存中

来自分类Dev

构造新的Django模型对象,而无需将所有相关模型加载到内存中

来自分类Dev

Django获取相关模型的所有记录

来自分类Dev

合并与JSON中的键相关联的所有值

来自分类Dev

具有模型关联的Rails json对象

来自分类Dev

如何加载所有模型的所有关联

来自分类Dev

Rails:仅包含模型A的所有内容,并且仅包含相关模型B的一个子集

来自分类Dev

模型关联在Rails中调用

来自分类Dev

Rails:在许多关联中获取模型

来自分类Dev

如何在Ember.js中删除模型的hasMany关联中的所有记录

来自分类Dev

如何在Ember.js中删除模型的hasMany关联中的所有记录

来自分类Dev

从关联的模型回调访问所有模型

来自分类Dev

如何在Rails中显示模型的所有实例?

来自分类Dev

Laravel获得多个模型的所有相关模型

来自分类Dev

将装饰的DataFrame与所有pandas函数相关联

Related 相关文章

  1. 1

    将所有模型关联在Rails上的ruby中

  2. 2

    如何更新 Rails 中的所有关联模型?

  3. 3

    获取Rails中模型类型的所有记录的所有关联数据?

  4. 4

    Django:如何返回与ForeignKey相关联的所有模型,包括这些模型的所有属性?

  5. 5

    模型具有所有关联的Rails

  6. 6

    模型具有所有关联的Rails

  7. 7

    获取Django中的所有相关模型类

  8. 8

    在laravel中查询相关模型中表的所有内容

  9. 9

    如何获取与Django中的User相关联的所有相关对象?

  10. 10

    如何在Rails中不直接相关的2个模型之间建立关联?

  11. 11

    验证Rails中的关联模型

  12. 12

    从关联的模型(表)中查找具有至少一个关联的所有记录

  13. 13

    在Rails中显示所有关联的记录信息

  14. 14

    获得所有has_many关联在rails中

  15. 15

    构造新的Django模型对象,而无需将所有相关模型加载到内存中

  16. 16

    构造新的Django模型对象,而无需将所有相关模型加载到内存中

  17. 17

    Django获取相关模型的所有记录

  18. 18

    合并与JSON中的键相关联的所有值

  19. 19

    具有模型关联的Rails json对象

  20. 20

    如何加载所有模型的所有关联

  21. 21

    Rails:仅包含模型A的所有内容,并且仅包含相关模型B的一个子集

  22. 22

    模型关联在Rails中调用

  23. 23

    Rails:在许多关联中获取模型

  24. 24

    如何在Ember.js中删除模型的hasMany关联中的所有记录

  25. 25

    如何在Ember.js中删除模型的hasMany关联中的所有记录

  26. 26

    从关联的模型回调访问所有模型

  27. 27

    如何在Rails中显示模型的所有实例?

  28. 28

    Laravel获得多个模型的所有相关模型

  29. 29

    将装饰的DataFrame与所有pandas函数相关联

热门标签

归档