我试图做一个"不简单"使用ActiveRecord进行查询:
ChatRoom.first.as_json(include: {
chat_room_members: {
include:{
user: {
include: [
hero_page: {
only: [:torch_id]
},
card: {
only: [:crop_y]
}
]
}
}}})
在模型中,ChatRoom
有许多ChatRoomMembers
,其中User
有HeroPage
和Card
。
问题是ActiveRecord完全忽略了参数card
。更具体地说,忽略user: include{}
中的第一个参数之后的所有参数:
{
"id" =>22,
"chat_room_members" => [
{
"id" =>7,
"user" => {
"id" =>22,
"hero_page" => {
"torch_id" =>"superhero23"
},
}
}
]
}
但是,如果我从only
或hero_page
中移除card
参数,ActiveRecord会显示一切正常。例如:
[...]
include: [
hero_page: {
only: [:torch_id]
},
:card
]
[...]
其他奇怪的事实是我可以在第二个参数中键入任何内容(尊重语法)并且不会导致错误。例如:
[...]
include: [
hero_page: {
only: [:torch_id]
},
this: {
only: [:doesnt, :cause, :error]
}
]
[...]
与第一个示例一样,仅显示hero_page
并忽略其他参数this
,它甚至不存在。
有人知道为什么在这些情况下会忽略第二个参数吗?
答案 0 :(得分:1)
user.include
需要哈希而不是当前的数组。