我有以下類別:Rails Mysql:如何只包含符合我的條件的has_many關係對象?
class User < ActiveRecord::Base
has_many :keys
end
class Key < ActiveRecord::Base
belongs_to :room
end
class Room < ActiveRecord::Base
#has column "surface_area"
end
我要查詢的是有房有10 surface_area,僅包括客房有10
我的表面面積的按鍵鍵的所有用戶有以下查詢:
User.joins(keys: :room).where('room.surface_area= ?', 10)
這將返回其具有鍵爲10 room.surface_area的用戶,但它包括了所有的鍵,所以也鍵具有室具有比10不同的表面積我只想返回潛艇其具有與10
錯誤返回值的表面積的房間的鑰匙的等:
Users:{
keys: [
{id: 1, surface_area: 11},
{id: 2, surface_area: 10},
{id: 3, surface_area: 10}
]
}
正確的返回值:爲用戶
Users:{
keys: [
{id: 2, surface_area: 10},
{id: 3, surface_area: 10}
]
}
json.rabl文件
collection @users, :root => :users, :object_root => false
child :keys do
extends "keys"
end
刪除,如果它不工作,只是刺傷'User.joins(keys::room).where(room:{surface_area:10})'試試這個 –