“邻里”属于“城市”。 “城市”有很多“社区”。
如何通过城市名称选择属于特定城市的所有社区?城市名称是存储在城市表中的属性。
Neighborhood.joins(:city)
将使用此SQL获取所有社区:
SELECT "neighborhoods".*
FROM "neighborhoods"
INNER JOIN "cities"
ON "cities"."id" = "neighborhoods"."city_id"
但是使用这个SQL执行查询的Rails方式是什么(唯一的区别是最后一行)?
SELECT "neighborhoods".*
FROM "neighborhoods"
INNER JOIN "cities"
ON "cities"."id" = "neighborhoods"."city_id"
AND "cities"."name" = "New York"
答案 0 :(得分:1)
只需使用cities.name
:
Neighborhood.joins(:city).where("cities.name = ?", "New York")
答案 1 :(得分:1)
执行此操作的'rails'方式是在模型中使用活动记录关联
class City < ActiveRecord::Base
has_many :neighborhoods
....
end
class Neighborhood < ActiveRecord::Base
belongs_to :city
...
end
然后你可以打电话:
neighborhoods = City.find_by(name: "New York").neighborhoods
答案 2 :(得分:0)
如果使用Rails模型,不完全是sql,但结果可能是:
city = City.where(:name =&gt;“New York”)。首先 city.neighborhoods
答案 3 :(得分:0)
您应该尝试使用此代码 -
City.joins(:neighborhoods).select("neighborhoods.*").where("cities.name = 'New York'")
阐释 -
It will be 'City.joins(:neighbourhoods)' because City has_many neightbours and 'city_id' will work as foreign key for neighbourhood model.
select(“neighborhoods。*”)将从邻域表中选择所有列。
其中(“cities.name ='New York'”)是您的所有记录,其中“城市名称”等于“纽约”。