我已进入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
答案 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)