这是错误消息中最有价值的部分:
SQLite3::SQLException: ambiguous column name: user_id
当SQL结果集具有多个具有相同名称的列时,可能会发生模糊列名称错误。在这种情况下,列是 user_id 。
user_id
该 user_id 列位于wiki表和协作表中。这两个表都在SQL查询中使用。
这是导致问题的SQL代码段:
# DB can't figure out which table "user_id = 2" refers to: WHERE (hide = 'f' or user_id = 2 or collaborations.user_id = 2)
我们需要在其上指定一个表名前缀 user_id 柱。
为此,请尝试更改此行 WikiPolicy 从:
WikiPolicy
scope.joins(:collaborations) .where("hide = :hide or user_id = :owner_id or collaborations.user_id = :collaborator_id", {hide: false, owner_id: user.id, collaborator_id: user.id})
至:
scope.joins(:collaborations) .where("hide = :hide or wikis.user_id = :owner_id or collaborations.user_id = :collaborator_id", {hide: false, owner_id: user.id, collaborator_id: user.id})