Sql 如何获取关联的记录';s关联的_id是一个给定值

Sql 如何获取关联的记录';s关联的_id是一个给定值,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,我有一个郊区activerecord,它属于一个城市,并且有许多列表,我想获取郊区城市为给定值的列表 listings = Listing.joins(:suburbs).where('listings.updated_at >= ?', 2.months.ago).where('city_id = ?', city_id) 根据给定id查找郊区 查找郊区的所有相关列表。查看更多信息 郊区.find(city\u id).listings.where('updated\u at>

我有一个郊区activerecord,它属于一个城市,并且有许多列表,我想获取郊区城市为给定值的列表

    listings = Listing.joins(:suburbs).where('listings.updated_at >= ?', 2.months.ago).where('city_id = ?', city_id)
  • 根据给定id查找郊区
  • 查找郊区的所有相关列表。查看更多信息
    郊区.find(city\u id).listings.where('updated\u at>=?',2.月前)
    
    我假设您已经定义了这些关联。如果我错了,请纠正我

    郊区班:

    has_many :listings
    belongs_to :city
    
    在列表类中:

    belongs_to :suburb
    
    城市级:

    has_many :suburbs
    
    现在,要获取city所在的所有列表,您需要先将列表与郊区、然后与city合并,然后过滤出结果。通过这个来更好地理解

    listings = Listing.joins(suburb: :city).where('listings.updated_at >= ?', 2.months.ago).where(cities: {id: city_id })
    

    这应该行。

    我想要该城市所有郊区的列表,这将只返回一个郊区。但是我会看一下这些文件,谢谢。这方面没有什么问题。首先,一个城市可能有许多郊区。其次,
    find(city\u id)
    将查找id:city\u id错误的郊区。它应该是
    find\u by(city\u id:city\u id)
    。我已经用更多信息更新了答案。一定要去看看。