假设我有一个Country
模型has_many
City
。拥有Country.name
和City.name
,如何查看相应城市是否出现在指定国家/地区的城市列表中?
我开始时:
Country.where(name: self.country_name).first.cities...
但不知道在那里检查City.name
的最佳方式是什么。
答案 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)