是否可以找到与对象的所有关联记录以在Rails 4中合并记录

daveomcd

我想向我的模型添加一个函数来合并两个记录。例如,如果我有PlayerA和PlayerB,并且想要销毁PlayerB,但将其当前所有记录分配给PlayerA。我打算制作一种方法,可以查找他的所有记录,并用PlayerA的ID代替,就像这样...

#...
Note.where(player_id: PlayerB.id).update_all(player_id: PlayerA.id)
HighScores.where(player_id: PlayerB.id).update_all(player_id: PlayerA.id)
Friends.where(player_id: PlayerB.id).update_all(player_id: PlayerA.id)
#...

现在,如果我采用这种方式,我将必须记住为以后为玩家模型创建的每个关联添加一个。有没有办法可以通过某些方法来动态地完成此操作,可以通过某些方法来拉动所有关联,所以我不必为每个新的关联手动添加?

双重否定

似乎是ActiveRecord :: Reflection的正确位置

Player.reflect_on_all_associations             # returns an array of all associations
Player.reflect_on_all_associations(:has_many)  # returns an array of all has_many associations

所以可能这样的事情可能对您有用:

associations = Player.reflect_on_all_associations(:has_many)
associations.each do |association|
  associated_class = association.class_name.constantize # e.g. Note
  foreign_key      = association.foreign_key            # e.g. player_id
  associated_class.where(foreign_key => PlayerB.id).
                   update_all(foreign_key => PlayerA.id))
end

请注意,对于像这样的复杂关联,这可能会更加棘手has_and_belongs_to_many为了简便起见,我这里不包括这种情况下,但你可以实现一些有条件的逻辑,基于association.class这是一个ActiveRecord::Reflection子类(BelongsToReflectionHasAndBelongsToManyReflectionHasManyReflectionHasOneReflection)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

Rails查找所有关联ID匹配的记录

来自分类Dev

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

来自分类Dev

是否可以通过邮件合并单个记录,而不是将所有记录合并在一个文档中?

来自分类Dev

Rails,ActiveRecord,has_many:through:查找没有关联的所有记录

来自分类Dev

合并Purescript中的记录

来自分类Dev

如何在Ruby on Rails中汇总来自联接表的所有关联记录?

来自分类Dev

在富连接表导轨中查找没有关联记录的所有记录

来自分类Dev

Sequelize:根据关联属于多个记录查找记录-但仍返回所有关联记录吗?

来自分类Dev

如何获取所有关联的孙子记录?

来自分类Dev

如何保存没有关联记录的对象

来自分类Dev

合并SQL SERVER中的记录

来自分类Dev

合并Google表格中的记录

来自分类Dev

合并记录中的出站消息

来自分类Dev

合并neo4j中的现有记录,删除重复项,保持可选关系

来自分类Dev

Rails 4 to_json包含所有关联

来自分类Dev

postgresql:选择所有关联记录都符合条件的记录

来自分类Dev

如何使用循环删除特定记录的所有关联记录?(不使用依赖)

来自分类Dev

查看关联记录中存在的所有记录

来自分类Dev

从重复对象中删除所有关联

来自分类Dev

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

来自分类Dev

在 Rails 中查找缺少关联记录的记录

来自分类Dev

我如何不包括最新记录,而是来自Rails中某个对象的所有记录?

来自分类Dev

mysql如何合并表中的类似记录

来自分类Dev

ExtJS:合并存储中的记录

来自分类Dev

如何根据时间在sql中合并记录

来自分类Dev

匹配并合并Bash中的记录

来自分类Dev

在VBA中合并MySQL记录集

来自分类Dev

合并SQL Server中的重复记录

Related 相关文章

  1. 1

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

  2. 2

    Rails查找所有关联ID匹配的记录

  3. 3

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

  4. 4

    是否可以通过邮件合并单个记录,而不是将所有记录合并在一个文档中?

  5. 5

    Rails,ActiveRecord,has_many:through:查找没有关联的所有记录

  6. 6

    合并Purescript中的记录

  7. 7

    如何在Ruby on Rails中汇总来自联接表的所有关联记录?

  8. 8

    在富连接表导轨中查找没有关联记录的所有记录

  9. 9

    Sequelize:根据关联属于多个记录查找记录-但仍返回所有关联记录吗?

  10. 10

    如何获取所有关联的孙子记录?

  11. 11

    如何保存没有关联记录的对象

  12. 12

    合并SQL SERVER中的记录

  13. 13

    合并Google表格中的记录

  14. 14

    合并记录中的出站消息

  15. 15

    合并neo4j中的现有记录,删除重复项,保持可选关系

  16. 16

    Rails 4 to_json包含所有关联

  17. 17

    postgresql:选择所有关联记录都符合条件的记录

  18. 18

    如何使用循环删除特定记录的所有关联记录?(不使用依赖)

  19. 19

    查看关联记录中存在的所有记录

  20. 20

    从重复对象中删除所有关联

  21. 21

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

  22. 22

    在 Rails 中查找缺少关联记录的记录

  23. 23

    我如何不包括最新记录,而是来自Rails中某个对象的所有记录?

  24. 24

    mysql如何合并表中的类似记录

  25. 25

    ExtJS:合并存储中的记录

  26. 26

    如何根据时间在sql中合并记录

  27. 27

    匹配并合并Bash中的记录

  28. 28

    在VBA中合并MySQL记录集

  29. 29

    合并SQL Server中的重复记录

热门标签

归档