【发布时间】:2017-03-07 02:47:29
【问题描述】:
我有一个会议表,其中有一个请求者(用户),其属性为birthyear。
在终端我可以做 Meeting.find(1).requestor.birthyear
但在会议控制器中,它显示no such column: requestor.birthyear
我尝试在 meeting_params 中添加类似 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):
*****更新***** 我发布了另一个问题以获取语法。如果它帮助任何人: Rails: Two 'where' queries - each works individually, but not together
【问题讨论】:
标签: ruby-on-rails ruby sqlite