Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 我可以在模型中使用两个分组吗?_Ruby On Rails - Fatal编程技术网

Ruby on rails 我可以在模型中使用两个分组吗?

Ruby on rails 我可以在模型中使用两个分组吗?,ruby-on-rails,Ruby On Rails,在模型中是否可以使用两组?我不知道如何写程序。我有一个大类,所以我想创建这样的散列 class << self def category_sort order(small_category_id: "asc", id: "asc") .group_by { |w| w.small_category.name } end end small_category1 => [data1,data2,data3] small_category2

在模型中是否可以使用两组?我不知道如何写程序。我有一个大类,所以我想创建这样的散列

 class << self
   def category_sort
     order(small_category_id: "asc", id: "asc")
     .group_by { |w| w.small_category.name }
   end
 end
 small_category1 => [data1,data2,data3]
 small_category2 => [data4,data5]
 small_category3 => [data6,data7,data8]
 big_category1 => small_category1 => [data1,data2,data3]
               => small_category2 => [data4,data5]
 big_category2 => small_category3 => [data6,data7,data8]
目前我可以像这样得到上面的表格

 class << self
   def category_sort
     order(small_category_id: "asc", id: "asc")
     .group_by { |w| w.small_category.name }
   end
 end
 small_category1 => [data1,data2,data3]
 small_category2 => [data4,data5]
 small_category3 => [data6,data7,data8]
 big_category1 => small_category1 => [data1,data2,data3]
               => small_category2 => [data4,data5]
 big_category2 => small_category3 => [data6,data7,data8]

class如果要在一行中编写相同的逻辑,使其看起来更干净:

 class << self
   def category_sort
     r = order(small_category_id: "asc", id: "asc")
         .group_by { |w| [w.small_category.big_category.name, w.small_category.name] }

     hash = Hash.new { |h,k| h[k] = {} }
     r.each do |k, v|
       hash[k[0]][k[1]] = v
     end
   end
 end

class如果要在一行中编写相同的逻辑,使其看起来更干净:

 class << self
   def category_sort
     r = order(small_category_id: "asc", id: "asc")
         .group_by { |w| [w.small_category.big_category.name, w.small_category.name] }

     hash = Hash.new { |h,k| h[k] = {} }
     r.each do |k, v|
       hash[k[0]][k[1]] = v
     end
   end
 end

class嘿,你可以这样试试

class << self
   def category_sort
     order(small_category_id: "asc", id: "asc")
     .group_by { |w| [w.small_category.big_category.name, w.small_category.name] }
     .each_with_object(Hash.new { |h,k| h[k] = {} }) {|(k,v),h| h[k.first][k.last] = v}
   end
 end
class{key.last=>value}}.map(&:to_a).reduce(:concat).to_h
结束
结束

嘿,你可以这样试试

class << self
   def category_sort
     order(small_category_id: "asc", id: "asc")
     .group_by { |w| [w.small_category.big_category.name, w.small_category.name] }
     .each_with_object(Hash.new { |h,k| h[k] = {} }) {|(k,v),h| h[k.first][k.last] = v}
   end
 end
class{key.last=>value}}.map(&:to_a).reduce(:concat).to_h
结束
结束