ruby-on-rails - 如何检查关联模型
问题描述
我有一个事件模型和一个服务模型,我必须根据参数返回事件记录。我有两个参数city and service
。城市存在于事件模型中,服务是服务模型中的服务名称。我尝试了以下方法:
Event.all.map{|event| event.city == params[:city] && event.services.map{|service| service.where("lower(name) LIKE ?", "#{params[:service]} %")}}
但到目前为止,如果有人能提供帮助,那就太棒了。谢谢。
解决方案
您可以使用在查询joins
中添加INNER JOIN
子句,这样就可以访问与每个事件相关的服务。有了它,您可以使用他们的name
列并使用 ActiveRecord 过滤它们:
Event.joins(:services)
.where(city: params[:city])
.where('LOWER(services.name) LIKE ?', "#{params[:service]}%")
推荐阅读
- c# - 403 禁止访问,同时使用 Azure 密钥保管库解密
- sql - 检查电子邮件的第一个字母是否与“s”匹配
- api - 空手道 - 获取当前日期并对其进行操作不会返回任何内容
- java - 不要从 SOAP Web 服务中读取附件
- javascript - 等待异步函数结束
- usb - 如何创建基于信用的 USB 密钥,以限制数字扫描文件的导出或保存次数
- java - GarbageCollectorMXBean#getCollectionTime 在 G1GC 中是什么意思
- javascript - 在我的照片中,我无法将星星旋转成圆圈
- vue.js - 多个验证插件问题
- sql - SQL - 将具有周范围的行拆分为多行