为什么 `merit_actions` 出现在这个查询中而没有被指定?
Why is `merit_actions` appearing in this query without being specified?
在产品 Rails 4.2 应用程序中,每当调用 Events#show 页面时,我都会看到以下日志错误。
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "actions" SELECT "merit_actions".* FROM "merit_actions" WHERE (actions.trackable_type = 'Comment' AND actions.trackable_id in (NULL))
我在计算时遇到问题why/how正在创建此查询并调试问题。
此查询应该构建一个 activity 提要,大致基于此 Railscast。 Event 模型有一个多态的 Actionable 关联,通过它关联许多 Comments 和 Photos。
在Event模型中是如下方法
def action_feed
fetch_comments = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Comment", self.comments.map(&:id) )
fetch_photos = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Photo", self.leadings.map(&:id) )
merged_actions = fetch_comments | fetch_photos
sorted_actions = merged_actions.sort_by{ |a| a[:created_at] }.reverse
paginated_actions = Kaminari.paginate_array( sorted_actions )
end
如您所见,引用了 Action 模型,但没有引用导致查询出现问题的 merit_actions
。
我确实安装了 Merit gem
class User
has_merit
end
但不在事件模型上。
为什么这个查询引用 merit_actions
,我该如何调试它?这对我来说没有意义。
您的 Action
模型与 Merit 的模型冲突,这令人惊讶,因为 Merit 的是命名空间。
尝试在您的调用中指定根命名空间,例如 ::Action
。
如果这个问题可以得到解决,我很乐意发布错误修复程序。
在产品 Rails 4.2 应用程序中,每当调用 Events#show 页面时,我都会看到以下日志错误。
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "actions" SELECT "merit_actions".* FROM "merit_actions" WHERE (actions.trackable_type = 'Comment' AND actions.trackable_id in (NULL))
我在计算时遇到问题why/how正在创建此查询并调试问题。
此查询应该构建一个 activity 提要,大致基于此 Railscast。 Event 模型有一个多态的 Actionable 关联,通过它关联许多 Comments 和 Photos。
在Event模型中是如下方法
def action_feed
fetch_comments = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Comment", self.comments.map(&:id) )
fetch_photos = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Photo", self.leadings.map(&:id) )
merged_actions = fetch_comments | fetch_photos
sorted_actions = merged_actions.sort_by{ |a| a[:created_at] }.reverse
paginated_actions = Kaminari.paginate_array( sorted_actions )
end
如您所见,引用了 Action 模型,但没有引用导致查询出现问题的 merit_actions
。
我确实安装了 Merit gem
class User
has_merit
end
但不在事件模型上。
为什么这个查询引用 merit_actions
,我该如何调试它?这对我来说没有意义。
您的 Action
模型与 Merit 的模型冲突,这令人惊讶,因为 Merit 的是命名空间。
尝试在您的调用中指定根命名空间,例如 ::Action
。
如果这个问题可以得到解决,我很乐意发布错误修复程序。