小编zjw*_*ang的帖子

重新排序rails中的活动记录而不重新查询数据库?

例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品.

@products = Product.order(params[:order_by])
Run Code Online (Sandbox Code Playgroud)

让我们想象一下,在product_list视图中,用户可以使用下拉列表按价格,评级,权重等进行排序.数据库中的产品不会经常更改.

我很难理解的是,每次用户选择新的order_by过滤器时rails是否必须查询,或者rails是否能以某种方式缓存活动记录以便在服务器端重新排序?有没有办法写它,所以如果用户排序,rails将不会重新查询结果?(即,如果产品表不经常更改,那么如果用户只想按其他变量排序,则无法进行查询)

谢谢,

ruby sorting activerecord caching ruby-on-rails

5
推荐指数
1
解决办法
1883
查看次数

如何对反向排序的红宝石数组应用二级排序?

我有一个红宝石数组,格式为[["Anna",70],["Billy",90],["Billy",100]]...

我知道我可以使用以下方法进行二级排序

sort_by{ |o| [o.name, o.score]}
Run Code Online (Sandbox Code Playgroud)

但是我想首先在Name asc上排序,然后在Score上排序但降序排列。我怎样才能做到这一点?

谢谢

ruby arrays sorting ruby-on-rails

3
推荐指数
1
解决办法
819
查看次数

Unicorn服务upstart脚本抛出"-su:bundle:command not found"

我最近在DigitalOcean上创建了一个VPS来托管rails应用程序.我按照他们的指南用我的应用程序设置了Unicorn.https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04

我跑的时候出了问题sudo service unicorn_appxyz start.给出的错误是-su: bundle: command not found

我跟踪了init.d脚本并在终端中粘贴了评估的服务器启动命令,它在用户joe(rbenv安装的用户和应用程序的所有者)下执行时工作正常.评估的命令是

su - joe -c cd /home/joe/appxyz && bundle exec unicorn -c config/unicorn.rb -E production -D
Run Code Online (Sandbox Code Playgroud)

我然后sudo su - 进入root用户并运行service unicorn_appxyz start错误当然是一样的.然后我在root下运行了evaluate命令,它返回了这个错误

The program 'bundle' is currently not installed. You can install it by typing:
apt-get install bundler
Run Code Online (Sandbox Code Playgroud)

看来脚本没有切换用户?这可能是我启动VPS时独角兽无法启动的原因.

完整的独角兽新贵脚本在这里:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails upstart unicorn rbenv ubuntu-14.04

3
推荐指数
1
解决办法
989
查看次数

如何使用Imagemagick删除颜色配置文件而不删除EXIF数据?

我的服务器中的图像文件使用imagemagick处理.有时我从用户那里获得带有颜色配置文件的文件,并且在将图像上传到存储之前使用-strip删除它们.使用-strip还从图像中删除了EXIF数据.我有兴趣知道是否有办法只删除颜色配置文件而不是关于地理位置和相机设置的exif信息?

exif ruby-on-rails imagemagick image-processing color-profile

1
推荐指数
1
解决办法
2637
查看次数

对 Scala 中嵌套元组列表中的多个元素使用 sortBy

鉴于[((String, String), Double)]Scala 中的以下数据类型,我将如何使用 sortBy 函数对第一个字符串和第二个字符串进行排序?对多个值进行排序有一些答案,但在下面的情况下呢?

var test = 
  List((("C","c"),4.3), (("A","c"),1.4), (("C","d"),80.1))

test.sortBy(???).foreach(println)
Run Code Online (Sandbox Code Playgroud)

输出应提供以下内容

(("A","c"),1.4),  
(("C","c"),4.3),
(("C","d"),80.1)
Run Code Online (Sandbox Code Playgroud)

scala

-1
推荐指数
1
解决办法
148
查看次数