У меня есть следующие классы: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
Я хочу, чтобы запросить все пользователи, имеющие ключи с номерами с surface_area 10, только в том числе ключи с номерами, которые имеют площадь поверхности 10.
I имеют следующий запрос:
User.joins(keys: :room).where('room.surface_area= ?', 10)
Это возвращает пользователей, которые имеют ключи с room.surface_area 10, но она включает в себя все ключи, так и ключи, которые имеют номер с различной площадью поверхности, чем 10. Я только хочу вернуть подсайты и др ключей, которые имеют номер с площадью поверхности 10.
Wrong возвращаемого значения:
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})' try this –