Ruby on rails / Active Record Query:如果带有数组的字段/记录不包含元素,则返回

时间:2017-10-17 13:33:54

标签: ruby-on-rails ruby

我已进入TravelIdeas表格字段country_trips,其中包含一系列国家/地区。

#<TravelIdea:0x007faa7bec40f0> {
                      :id => 9,
                :idea_key => "romantic",
               :idea_type => nil,
                    :cost => 2000,
              :created_at => Mon, 10 Jul 2017 07:48:49 UTC +00:00,
              :updated_at => Mon, 16 Oct 2017 08:10:47 UTC +00:00,
           :country_trips => [
                [0] "PL"
               ],
     :available_languages => [
                [0] "pl"
              ]
}

本地旅行在:country_trips中为零,所以我可以忽略它们:

idea.where.not(country_trips: nil) if country.present?

我有我的用户目的地国家/地区,因此我想向他展示所有包含他梦寐以求的国家的旅行创意。

它会像SQL server CONTAINS(列,'country')

这可能不是LIKE,因为这不是将1个国家/地区与1个国家匹配。

例如 country = user.destination_country 手段: country = "PL"

但是

:country_trips => [
   [0] "PL",
   [1] "DE"
   ],

我正在寻找......好像

TravelIdea.where(country_trips: country)

将返回所有在country_trips数组中包含此国家/地区的旅行提示:P

1 个答案:

答案 0 :(得分:1)

这更像是一个postgres问题,8.15.5. Searching in Arrays部分说:

SELECT * FROM sal_emp WHERE 10000 = ANY (pay_by_quarter);

在您的情况下,您可以将其写为.where方法中的SQL段:

TravelIdea.where("? = ANY (country_trips)", country)