gpt4 book ai didi

mysql - Ruby 中的绑定(bind)变量

转载 作者:行者123 更新时间:2023-11-29 06:19:56 24 4
gpt4 key购买 nike

我目前有一个表格,列出如下:

projects = Project.find(:all, :conditions => [conditions + "AND (name LIKE ? OR description LIKE ?)", "%#{params[:query]}%", "%#{params[:query]}%"])

哪里

 conditions = Project.in_used_projects(:alias => "projects")

但是我需要包含第三个变量,该变量不是来自项目表,而是来自标签表。我需要的列是Tag -> Names。无论如何,我可以绑定(bind) Ruby 中另一个表的变量吗? Project.find(all) 自动将 SELECT * FROM Project 传递到 MYSQL。有人建议使用 join 函数,但我不确定这将如何工作。有什么想法吗?

编辑 1

我已经尝试过使用建议的答案

projects = Project.find(:all, :joins => "tags", :conditions => [conditions + "AND (projects.name LIKE ? OR description LIKE ? OR tags.name LIKE ?", ["%#{params[:query]}%" * 3]].flatten)

但现在我收到另一个错误

Mysql::Error: 未知表“projects”: SELECTprojects.* FROMprojectstags WHERE ((projects.status = 2)AND (projects .name LIKE '%%' 或项目.description LIKE '%%' 或标签.name LIKE '%%')

考虑到项目表的存在,这很奇怪。既然我已经包含了另一个表,为什么 Ruby 无法识别它?

最佳答案

试试这个尺寸:

projects = Project.find(:all, :joins => "tags", :conditions => [conditions + "AND (projects.name LIKE ? OR description LIKE ? OR tags.name LIKE ?", ["%#{params[:query]}%" * 3]].flatten)

:joins 选项告诉 Active Record 对 tags 表执行 SQL 连接,这将允许您对标签列执行查询。另请注意在此示例中我如何将 projects. 前缀添加到原始 name 列中。这样您的数据库就不会混淆您想要的 name 列; projectstags 表中的一个。

关于mysql - Ruby 中的绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4312135/

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