Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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操作sql数据以返回唯一的列值_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails操作sql数据以返回唯一的列值

Ruby on rails Rails操作sql数据以返回唯一的列值,ruby-on-rails,Ruby On Rails,我有一个RoR应用程序,它在多个表之间进行连接,并将结果集作为json返回给客户端。 我需要帮助弄清楚如何只发送唯一的列值。 例如,如果您有一个employee和department表,则对这两个表执行联接将返回: Physics John Physics Joe Math Charlie Math Sheila 如何将删除重复值的数据返回给客户端,例如 Physics => { John, Joe } Math = > { charlie, Sh

我有一个RoR应用程序,它在多个表之间进行连接,并将结果集作为json返回给客户端。 我需要帮助弄清楚如何只发送唯一的列值。 例如,如果您有一个employee和department表,则对这两个表执行联接将返回:

Physics   John   
Physics   Joe
Math      Charlie
Math      Sheila
如何将删除重复值的数据返回给客户端,例如

Physics => { John, Joe }
Math = > { charlie, Sheila }
我想减少通过网络不必要地发送重复数据

有什么想法吗

编辑:

将其更改为此,在堆栈溢出时找到它,并正常工作:

@lec_hash = @lectures.inject({}) do | result, row |
    result[row.subject] = [] if result[row.subject].nil?
    result[row.subject] << row.name
    result
end

准备一个散列,其中key是主题名称,value是主题选择的名称数组

hash = Hash.new {|h,k| h[k] = [] }
result.each do |row|
  hash[ row.subject]  << row.name
end
假设:结果是AR记录数组,模型有subject和nameperson的name attributecolumn


然后将hash.to_json转换为

,谢谢你。我尝试了这个,得到了一个TypeError无法将字符串转换为整数。哪一行导致了错误?您确定结果是查询的结果,并且结果数组中的模型的列名为subject和name吗?虽然不是subject和name,但它们是varchar字段。.TypeError无法将字符串转换为整数:app/controllers/experiments\u controller.rb:30:in[]“app/controllers/experiments\u controller.rb:30:在获取实验数据的块中”app/controllers/experiments\u controller.rb:29:在每个“app/controllers/experiments\u controller.rb:29:在获取实验数据”中,这几乎没有帮助。只需编辑您的问题,并包含控制器和模型的代码片段。从你的代码中得到了这个想法。因此,将其标记为已解决。