Rails .where()查询不起作用

非常感谢你的帮助。 我有一个locationsads表。 位置has_many :ads我在位置模型上执行以下查询。

 @locations = Location.joins(:ads).where(@location_params.require(:location).permit(:id)).includes(:ads) 

然后我想对@locations执行额外的查询并根据以下内容对其进行过滤:ads

 @locations = @locations.joins(:ads).where(ads: @ads_params.require(:ads).permit(:id)).includes(:ads) 

此查询不起作用。 它返回一个空对象。

 => # 

这是参数:

  1. location_params

     @location_params.require(:location).permit(:id) 1} permitted: true> 
  2. ads_params

     @ads_params.require(:ads).permit(:id) 1} permitted: true> 

不允许像这样给出特定的列输入:

 @locations = Location.joins(:ads).where(locations: {id: 1}, ads: {id: 1}) 

我有postgresql,我没想过使用SQL,但我不确定。

查询参数

我正在使用rails console来执行此查询,以进行测试。

 @location_params => 1} permitted: false>} permitted: false> @location_params.require(:location).permit(:id) => 1} permitted: true> @ads_params => 1} permitted: false>} permitted: false> @ads_params.require(:ads).permit(:id) => 1} permitted: true> 

试试这个,

 ads_params = @ads_params.require(:ads).permit(:id).to_h location_params = @location_params.require(:location).permit(:id).to_h @locations = Location.joins(:ads).where(locations: location_params, ads: ads_params) 

希望有所帮助!