ruby-on-rails - 如何检查关联型号

标签 ruby-on-rails ruby

我有一个事件模型和一个服务模型,我必须根据参数返回事件记录。我有两个参数城市和服务。城市出现在事件模型中,服务是服务模型中的服务名称。我尝试过以下方法:

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]}%")

关于ruby-on-rails - 如何检查关联型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60382933/

相关文章:

ruby-on-rails - Rails将所有路由默认设置为: :json格式

mysql - rake 数据库 :create failing on Win7 x64

ruby-on-rails - 设计rails current_user与user_signed_in?

mysql - Openshift 中 RoR Mysql 部署的问题

ruby - 如何使用 Ruby 的 optparse 解析没有名称的参数

ruby-on-rails - 你如何使用 rails 重定向到外部网站?

ruby - 导出拉力赛项目数据

ruby-on-rails - 生产中邮件程序中的 Rails4 模板错误

ruby - 以二进制模式打开文件并保存它添加新行

mysql - sinatra +Datamapper + mysql