列在那里,但是我收到:sqlite3 :: sqlexception:no usepent offerent:reque



我有一个会议表,该表有一个带有属性生育的请求者(用户)。

在终端我可以进行会议。输入(1).requestor.birthyear

但是在会议控制器中,它说no such column: requestor.birthyear

我尝试在会议中添加类似 users_attributes: [:birthyear]的东西,但没有任何区别。

我缺少什么?

这是完整的文件:会议控制器

def community
  if current_user.birthyear != nil
    @meeting_requests = Meeting.where('meeting_time >= ? AND requestee_id IS ? AND status = ? AND (requestor.birthyear <= ? AND requestor.birthyear >= ?)', Date.today, nil, "Active", current_user.birthyear + 10, current_user.birthyear - 10).order('meeting_time asc')
  end
end

会议模型

class Meeting < ApplicationRecord
    belongs_to :requestor, class_name: "User"
    belongs_to :requestee, class_name: "User"
end

错误:

SQLite3::SQLException: no such column: requestor.birthyear: SELECT "meetings".* FROM "meetings" WHERE (meeting_time >= '2017-03-06' AND requestee_id IS NULL AND status = 'Active' AND (requestor.birthyear <= 1944 AND requestor.birthyear >= 1924)) ORDER BY meeting_time asc

让我知道您是否需要任何进一步的东西 - 预先感谢!

更新

试图将表加入查询中,但对此不太了解。我正在尝试:

@meeting_requests = Meeting.where('meeting_time >= ? AND requestee_id IS ? AND status = ? ', Date.today, nil, "Active").order('meeting_time asc').joins("INNER JOIN users on requestor.birthyear >= current_user.birthyear + 10")

但是得到:

ActionView::Template::Error (SQLite3::SQLException: ambiguous column name: status: SELECT "meetings".* FROM "meetings" INNER JOIN users on requestor.birthyear >= current_user.birthyear + 10 WHERE (meeting_time >= '2017-03-07' AND requestee_id IS NULL AND status = 'Active' ) ORDER BY meeting_time asc):


*****更新*****我发布了另一个问题以获取语法。如果对任何人有帮助:导轨:两个" where"查询 - 每个人都单独起作用,但不能一起工作

requestorrequestee是导轨关联。这意味着Rails了解如何从会议中获得requestor ...

但是 - 您的数据库不知道requestor是什么。因此,您不能像在此处完成的SQL-Query的字符串零件:

 AND (requestor.birthyear <= ? AND requestor.birthyear >= ?)'

相反,您需要使用加入将它们添加到查询中,然后弄清楚栏杆如何命名以访问它们的列。

相关内容

最新更新