ruby-on-rails - 在 Rails 中查找具有多个列名的记录
问题描述
我有一张桌子,它与这样的活动商店Offer
有一个依赖关系:OfferDescription
t.boolean "discovery", default: false
t.boolean "meeting_animals", default: false
t.boolean "milking_animals", default: false
t.boolean "tasting", default: false
t.boolean "birth_animal", default: false
t.boolean "stroll", default: false
t.boolean "harvest", default: false
t.boolean "craft", default: false
我的用户可以按活动搜索优惠,当他们只选择一项活动时就可以了,我做了这样的请求
activity = params[:activity].gsub(/'/, '')
.joins(:address, :offer_description)
.where("max_people_count >= ? AND offer_descriptions.#{activity}=?", peopleCount, true)
.near(location, distance, unit: :km)
但是,当他们选择多个活动以查找具有此活动或另一个活动的优惠时,我该如何正确地做呢?
桌子的制作方式OfferDescription
对我来说有点奇怪
解决方案
一种解决方案可以是
我假设对于多个活动,我们会将它放在一个数组中。
activities = ['discovery', 'meeting_animals']
activity_query = activities.each_with_object([]).do |activity, query|
query << "offer_descriptions.#{activity} = :flag"
end.join(" OR ")
.joins(:address, :offer_description)
.where("max_people_count >= ? AND " + activity_query,
peopleCount, flag: true)
.near(location, distance, unit: :km)
推荐阅读
- xamarin - Xamarin iOS 崩溃
- javascript - Angular 9 无法发出发布请求
- excel - Google表格/ Excel根据单元格值获取命名范围名称,其中多行用于相关下拉列表
- android - 向消费者分发一个 android 库(aar):但源代码在 GitHub 私有仓库中
- google-chrome - Vue.js 中 Chrome 和 Datalist 的性能问题
- ios - 将 NSAttributedString(字体/颜色)插入 UITextField 的 IBaction
- javascript - 如何通过php检查PayPal中的订阅ID是否有效
- javascript - 在脚本标签中使函数不是全局的
- assembly - 我不能在气体装配中使用 MOVABS?
- python - 如何从格式化字符串中查找字符串模板?