Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:as_json忽略参数_Ruby On Rails_Json_Activerecord_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails:as_json忽略参数

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_

我正在尝试使用ActiveRecord进行“非简单”查询:

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
需要是散列,而不是像您当前所做的那样是数组