我有Activity
has_one
的模型ComputedActivity
。我想查找所有已完成处理的活动,这意味着它们在数据库中具有计算的活动。
我写了这个查询
Activity.joins(:computed_activity).where.not(computed_activity: {id: nil})
这给了我错误
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: missing FROM-clause entry for table "computed_activity")
LINE 1: ...tivities"."activity_id" = "activities"."id" WHERE "computed_...
^
: SELECT "activities".* FROM "activities" INNER JOIN "computed_activities" ON "computed_activities"."activity_id" = "activities"."id" WHERE "computed_activity"."id" IS NOT NULL LIMIT $1
是什么导致此操作失败,我该如何解决?
答案 0 :(得分:3)
ActiveRecord :: StatementInvalid(PG :: UndefinedTable:错误:缺少 表“ computed_activity”的FROM子句条目)LINE 1: ... tivities“。” activity_id“ =”活动“。” id“ WHERE”计算......
您应该在where
子句中使用表名,而不是模型名。所以只要改变
Activity.joins(:computed_activity).where.not(computed_activity: {id: nil})
到
Activity.joins(:computed_activity).where.not(computed_activities: {id: nil})
答案 1 :(得分:0)
table name
在条件(即computed_activities
Activity.joins(:computed_activity).where.not(computed_activities: {id: nil})