0

假设用户有很多帐户,因此 user_id 在帐户表上。如果我想更新所有用户帐户并在 1 个 sql 调用中将它们提供给另一个用户,是否有“rails”方法来执行此操作?(不做executeSQL)

所以 Joel 有 1000 个帐户,Fred 没有帐户,Joel 想给 Fred 他所有的帐户,通常我可以遍历 joels 帐户并将它们分配给 fred 用户,但这会导致 1000 次 sql 调用..

4

1 回答 1

0
fred.accounts += joel.accounts

这将立即将所有帐户移出joel并将它们添加到任何现有帐户中fred。“立即”是指 SQL 将立即执行更新——您不需要另外保存正在移动的记录。

如果fred没有帐户,那也没关系,它仍然可以正常工作 - 它只会将joel' 帐户添加到fred' 的空帐户列表中。

这适用于“一对多”和“多对多”关系。

在一对多的情况下,它会为以前拥有的所有帐户更改表user_id上的字段。accountsjoel

在多对多情况下(帐户可以由多个用户共同拥有),它似乎只是为与零个或多个其他用户共同拥有的所有帐户更改user_id连接表上的字段(可能称为)。这有效地替换了与 .共同拥有的任何帐户。该帐户上的所有其他共同所有者似乎都不受影响。accounts_usersjoeljoelfred

于 2012-09-24T19:32:22.943 回答