PG::UndefinedTable: 错误:缺少表“user_events”的 FROM 子句条目

Posted

技术标签:

【中文标题】PG::UndefinedTable: 错误:缺少表“user_events”的 FROM 子句条目【英文标题】:PG::UndefinedTable: ERROR: missing FROM-clause entry for table "user_events" 【发布时间】:2019-02-17 11:17:47 【问题描述】:

我有一个古怪的案例。我不确定这是否是 Rails 错误(我使用的是 4.1.4 版)。也许,我需要升级我的版本。

基本上:

我的Event 模型具有以下关联:

has_many :attendees, ->  order(:name).select('users.*, user_events.event_title') ,
through: :user_events,
source: :user

这样做的目的是让我获得参加活动并通过user_events 加入表的用户,它还会让我获得他们的event_title

这适用于简单的情况:event.attendees

但是,它会出现以下错误:

Event.includes(:attendees).where.not(title: "wow")

问题基本上是user_events没有添加到出错的命令中的FROM子句中。不过它是在event.attendees 中添加的。

如何正确添加它?

我尝试过Event.includes(:attendees).joins(:user_events).where.not(title: "wow"),但它会将user_events 添加到错误的SQL 调用中。

【问题讨论】:

【参考方案1】:

我在这里得到了什么,您需要通过上述查询标题不是“哇”的人?正确的。 如果是这样,那么您应该在那里使用引用方法,因为rails不理解标题在“user_events”表上,因为您从事件中调用它也可以这样写

Event.includes(:attendees).joins(:user_events).where.not(user_events: title: "哇")

【讨论】:

以上是关于PG::UndefinedTable: 错误:缺少表“user_events”的 FROM 子句条目的主要内容,如果未能解决你的问题,请参考以下文章

PG::UndefinedTable: 错误: 关系“...”不存在

PG::UndefinedTable:错误:关系“active_storage_blob”不存在

PG undefinedtable 错误关系用户不存在

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "geometry_columns" do

ActiveRecord中的表名损坏错误

Heroku / Rails:PG :: Undefined Table:错误“[tablename]”在heroku rails迁移上不存在