Rails从连接表中获取值

时间:2017-06-23 09:36:00

标签: mysql ruby-on-rails controller

我的模型名为countrycityprovince

Country
has_many: cities

City
has_many :provinces
belongs_to :country

Province
belongs_to :city

此模型具有相同的列namelatlong

所以当我得到params[:name]时,我想在一个查询中搜索三个模型并加入以查找相关记录。

例如,如果它是法国,它会在国家等地找到它。

这可能吗?

修改

我试过了;

Country.all.joins(city: :province).where("cities.name = ? or provinces.name = ?", params[:name])

但这会让这个国家回归。我想知道,如果它是国家得到拉特和长,如果它的城市得到拉特市的长度,如果它是省得到拉特省和长省。

1 个答案:

答案 0 :(得分:1)

  

我想找到它是国家得到拉特和长,如果它的城市   得到这个城市的长途,如果它是省得到拉特和长期的   省。

除了检查所有三个模型中是否存在记录之外,我没有别的办法,如下所示,如果其中任何一个满足条件,则会lanlong

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