Ruby on rails 按数组索引查询顺序的Rails
我正在试图找到一种方法,可以按该数组中的索引对以下查询排序Ruby on rails 按数组索引查询顺序的Rails,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在试图找到一种方法,可以按该数组中的索引对以下查询排序 @books_sorted.map(&:id) => ["31f1d544-4ce5-4bcd-89fd-8a76e4c052fe", "1ccaab81-9443-40b6-9f0e-06b799377d9e", "622ebbdf-4eb9-4b2e-879a-5d93c0bdfb29", "1e255968-6094-4bdb-90de-9c0922a0ad4e", "14d08406-3136-48e4-8
@books_sorted.map(&:id) => ["31f1d544-4ce5-4bcd-89fd-8a76e4c052fe",
"1ccaab81-9443-40b6-9f0e-06b799377d9e",
"622ebbdf-4eb9-4b2e-879a-5d93c0bdfb29",
"1e255968-6094-4bdb-90de-9c0922a0ad4e",
"14d08406-3136-48e4-84c9-314a652ccf34"]
@books = @books.where("books.id in (?)", @books_sorted.map(&:id)) if @books_sorted.any?
这应该行得通
@books_sorted.collect {|book| @books.detect{|x| x.id == book.id}} if @books_sorted.any?
请注意:这不是一个有效的解决方案,因为我们使用ruby而不是数据库查询进行排序。
希望有帮助:)这应该行得通
@books_sorted.collect {|book| @books.detect{|x| x.id == book.id}} if @books_sorted.any?
请注意:这不是一个有效的解决方案,因为我们使用ruby而不是数据库查询进行排序。
希望有帮助:)你在使用MySql吗?我猜,他指的是
map
PG-是的,我指的是map。对不起,你在用MySql吗?我猜,他指的是map
PG-是的,我指的是map。对不起,非常感谢。这被认为是一个N+1查询吗?我很高兴它有帮助。我不认为这是N+1查询。当存在一对多关系时,会发生N+1查询。等一下,我将尝试找到一个好的例子。这个问题的公认答案是:用car及其车轮的例子很好地演示了N+1查询。好吧,再看一看。即使没有一对多的关系。现在看来是N+1。因为1个查询用于获取@书籍
,N个查询用于以正确的顺序获取书籍。但我不是这方面的专家,我不能评论它是否符合N+1。非常感谢。这被认为是一个N+1查询吗?我很高兴它有帮助。我不认为这是N+1查询。当存在一对多关系时,会发生N+1查询。等一下,我将尝试找到一个好的例子。这个问题的公认答案是:用car及其车轮的例子很好地演示了N+1查询。好吧,再看一看。即使没有一对多的关系。现在看来是N+1。因为1个查询用于获取@书籍
,N个查询用于以正确的顺序获取书籍。但我不是这方面的专家,我不能评论它是否符合N+1的条件。