检查关联数组中是否存在对象ID

时间:2014-11-07 15:01:07

标签: ruby-on-rails

假设我有一个Country模型has_many City。拥有Country.nameCity.name,如何查看相应城市是否出现在指定国家/地区的城市列表中?

我开始时:

Country.where(name: self.country_name).first.cities...

但不知道在那里检查City.name的最佳方式是什么。

2 个答案:

答案 0 :(得分:1)

此查询根据名称检查该城市是否存在:

Country.joins(:cities).where(name: country_name, cities: {name: city_name}).any?

如果您想要返回记录,那么:

Country.joins(:cities).where(name: country_name, cities: {name: city_name})

修改

如果您在单独的查询中检索了国家/地区对象,则可以检查其是否具有特定城市,如下所示:

country = Country.where(name: country_name).first
country.cities.exists?(name: city_name)

也可以合并:

Country.where(name: country_name).first.cities.where(name: city_name).first

区别在于以上代码执行两个查询,每个表一个,而使用joins在两个表上执行一个查询

答案 1 :(得分:0)

City.exists?(:name => "name",:country_id=> self.country.id)