我的模型名为country
,city
和province
。
Country
has_many: cities
City
has_many :provinces
belongs_to :country
Province
belongs_to :city
此模型具有相同的列name
,lat
和long
所以当我得到params[:name]
时,我想在一个查询中搜索三个模型并加入以查找相关记录。
例如,如果它是法国,它会在国家等地找到它。
这可能吗?
修改
我试过了;
Country.all.joins(city: :province).where("cities.name = ? or provinces.name = ?", params[:name])
但这会让这个国家回归。我想知道,如果它是国家得到拉特和长,如果它的城市得到拉特市的长度,如果它是省得到拉特省和长省。
答案 0 :(得分:1)
我想找到它是国家得到拉特和长,如果它的城市 得到这个城市的长途,如果它是省得到拉特和长期的 省。
除了检查所有三个模型中是否存在记录之外,我没有别的办法,如下所示,如果其中任何一个满足条件,则会lan
和long
。
If Country.exists?(name: params[:name])
Country.where(name: params[:name]).select(:lat, :long)
elsif City.exists?(name: params[:name])
City.where(name: params[:name]).select(:lat, :long)
elsif Province.exists?(name: params[:name])
Province.where(name: params[:name]).select(:lat, :long)
else
#code if none of them matched the condition
end