Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 通过附加条件的联接获取所有记录_Ruby On Rails_Ruby On Rails 4_Rails Activerecord - Fatal编程技术网

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.