我有一個會議表,其中有一個具有屬性birthyear的請求者(用戶)。列在那裏,但我收到:SQLite3 :: SQLException:沒有這樣的列:requestor.birthyear
在我所能做的Meeting.find(1).requestor.birthyear
但在會議控制器,它說:no such column: requestor.birthyear
我嘗試添加像在meetings_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
讓我知道,如果你還需要什麼 - 感謝提前!
UPDATE
試圖加入查詢的表,但不是太內行。我想:
@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):
***** UPDATE ***** 我張貼另一個問題得到的語法。如果它幫助任何人: Rails: Two 'where' queries - each works individually, but not together
如果是這種情況,爲什麼我可以在終端上這樣做,它理解我在說什麼,但不是在控制器中?我打電話給同一個數據庫。另外 - 我該怎麼做。我已經以這種方式設置了數據庫,因此不幸的是,使用連接表重做整個數據庫不是一種選擇。 – gwalshington
你到底在做什麼? 「 –
」已經以這種方式設置了數據庫,因此不幸的是,使用連接表重做整個數據庫不是一種選擇。「哎呀,這不是我所暗示的...我把它當作連接表的錯誤......我的意思是將表添加爲連接到您的查詢。 –