Ruby on rails Rails:as_json忽略参数
我正在尝试使用ActiveRecord进行“非简单”查询:Ruby on rails Rails:as_json忽略参数,ruby-on-rails,json,activerecord,ruby-on-rails-5,Ruby On Rails,Json,Activerecord,Ruby On Rails 5,我正在尝试使用ActiveRecord进行“非简单”查询: ChatRoom.first.as_json(include: { chat_room_members: { include:{ user: { include: [ hero_page: { only: [:torch_
ChatRoom.first.as_json(include: {
chat_room_members: {
include:{
user: {
include: [
hero_page: {
only: [:torch_id]
},
card: {
only: [:crop_y]
}
]
}
}}})
在该模型中,聊天室
有许多聊天室成员
,其中有一个用户
,有一个页面
和一张卡
问题是ActiveRecord完全忽略了参数card
。更具体地说,忽略user:include{}
中第一个参数之后的所有参数:
{
"id" =>22,
"chat_room_members" => [
{
"id" =>7,
"user" => {
"id" =>22,
"hero_page" => {
"torch_id" =>"superhero23"
},
}
}
]
}
但是,如果我从hero\u页面
或card
中删除only
参数,ActiveRecord会显示一切正常。例如:
[...]
include: [
hero_page: {
only: [:torch_id]
},
:card
]
[...]
另一个奇怪的事实是,我可以在第二个参数中键入任何内容(关于语法),并且不会导致任何错误。例如:
[...]
include: [
hero_page: {
only: [:torch_id]
},
this: {
only: [:doesnt, :cause, :error]
}
]
[...]
与第一个示例一样,只显示hero\u页面
,忽略另一个甚至不存在的参数this
有人知道为什么在这些情况下忽略第二个参数吗???
user.include
需要是散列,而不是像您当前所做的那样是数组