【问题标题】:Find records with multible column name in Rails在 Rails 中查找具有多个列名的记录
【发布时间】:2021-05-09 18:00:19
【问题描述】:

我的表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 表的制作方式对我来说有点奇怪

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord


    【解决方案1】:

    一个解决方案可以是

    我假设对于多个活动,我们会将它放在一个数组中。

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多