Ruby on rails 通过附加条件的联接获取所有记录
“邻里”属于“城市”。“城市”有许多“社区” 如何根据城市名称选择属于特定城市的所有社区?城市名称是存储在城市表中的属性Ruby on rails 通过附加条件的联接获取所有记录,ruby-on-rails,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,“邻里”属于“城市”。“城市”有许多“社区” 如何根据城市名称选择属于特定城市的所有社区?城市名称是存储在城市表中的属性 Neighborhood.joins(:city)将使用以下SQL获取所有邻居: SELECT "neighborhoods".* FROM "neighborhoods" INNER JOIN "cities" ON "cities"."id" = "neighborhoods"."city_id" 但是Rails用这个SQL执行查询的方式是什么(唯一的区别是最后一
Neighborhood.joins(:city)
将使用以下SQL获取所有邻居:
SELECT "neighborhoods".*
FROM "neighborhoods"
INNER JOIN "cities"
ON "cities"."id" = "neighborhoods"."city_id"
但是Rails用这个SQL执行查询的方式是什么(唯一的区别是最后一行)
只需使用
城市应用where条件。name
:
Neighborhood.joins(:city).where("cities.name = ?", "New York")
如果使用Rails模型,则不完全是sql,但相同的结果可能是: 城市=城市。其中(:name=>“纽约”)。首先
city.neighbories实现这一点的“rails”方法是使用活动记录关联,因此,在您的模型中
class City < ActiveRecord::Base
has_many :neighborhoods
....
end
class Neighborhood < ActiveRecord::Base
belongs_to :city
...
end
你应该试试这个代码-
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.
选择(“邻居。*”)将从邻居表中选择所有列
其中(“cities.name=‘New York’”)是获取所有‘city name’等于‘New York’的记录的密码 作为一个英国人,我不得不克制自己不去做邻居/
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.