假设用户有很多帐户,因此 user_id 在帐户表上。如果我想更新所有用户帐户并在 1 个 sql 调用中将它们提供给另一个用户,是否有“rails”方法来执行此操作?(不做executeSQL)
所以 Joel 有 1000 个帐户,Fred 没有帐户,Joel 想给 Fred 他所有的帐户,通常我可以遍历 joels 帐户并将它们分配给 fred 用户,但这会导致 1000 次 sql 调用..
假设用户有很多帐户,因此 user_id 在帐户表上。如果我想更新所有用户帐户并在 1 个 sql 调用中将它们提供给另一个用户,是否有“rails”方法来执行此操作?(不做executeSQL)
所以 Joel 有 1000 个帐户,Fred 没有帐户,Joel 想给 Fred 他所有的帐户,通常我可以遍历 joels 帐户并将它们分配给 fred 用户,但这会导致 1000 次 sql 调用..
fred.accounts += joel.accounts
这将立即将所有帐户移出joel
并将它们添加到任何现有帐户中fred
。“立即”是指 SQL 将立即执行更新——您不需要另外保存正在移动的记录。
如果fred
没有帐户,那也没关系,它仍然可以正常工作 - 它只会将joel
' 帐户添加到fred
' 的空帐户列表中。
这适用于“一对多”和“多对多”关系。
在一对多的情况下,它会为以前拥有的所有帐户更改表user_id
上的字段。accounts
joel
在多对多情况下(帐户可以由多个用户共同拥有),它似乎只是为与零个或多个其他用户共同拥有的所有帐户更改user_id
连接表上的字段(可能称为)。这有效地替换了与 .共同拥有的任何帐户。该帐户上的所有其他共同所有者似乎都不受影响。accounts_users
joel
joel
fred