gpt4 book ai didi

ruby-on-rails - 专栏在那里,但我收到:SQLite3::SQLException:没有这样的专栏:requestor.birthyear

转载 作者:数据小太阳 更新时间:2023-10-29 08:58:30 25 4
gpt4 key购买 nike

我有一个 session 表,其中有一个属性为生日的请求者(用户)。

在终端我可以做 Meeting.find(1).requestor.birthyear

但是在 session Controller 中,它说 no such column: requestor.birthyear

我尝试在 meetings_params 中添加类似 users_attributes: [:birthyear] 的内容,但没有任何区别。

我错过了什么?

完整文件如下: session 负责人

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

session 模型

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: 不明确的列名: 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

最佳答案

requestorrequestee 是 Rails 关联。这意味着 Rails 知道如何从 session 到达 requestor...

但是 - 您的数据库不知道什么是请求者。所以你不能像你在这里所做的那样将它放入 SQL 查询的字符串部分:

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

相反,您需要使用连接将这些添加到您的查询中,然后弄清楚 Rails 如何命名它们以便从中访问列。

关于ruby-on-rails - 专栏在那里,但我收到:SQLite3::SQLException:没有这样的专栏:requestor.birthyear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com