使用find获取所有记录

时间:2015-10-17 19:46:18

标签: ruby-on-rails rails-activerecord

我有以下课程:

class Movie < ActiveRecord::Base

然后在我的部分代码中,我尝试以这种方式使用find 获取所有记录

@movies = Movie.find(:all)

但它对我不起作用。我面临以下错误:

ActiveRecord::RecordNotFound (Couldn't find Movie with 'id'=all):

我知道,我可以通过Movie.all()以简单的方式执行此操作,但我坚持find,因为我的下一步将是 @movies = Movie.find(:all,order: myfield)我们知道,all()只获得1个参数。

那么我的代码有什么问题?

3 个答案:

答案 0 :(得分:3)

您不应该使用ActiveRecord find方法来获取所有记录。 find方法用于获取具有给定id的特定记录。如果要按特定顺序排序所有记录,请使用:

@movies = Movie.order('myfield')

相应地传递序列。默认为升序。

@movies = Movie.order('myfield DESC')

答案 1 :(得分:1)

@movies = Movie.all.order('myfield')

答案 2 :(得分:1)

要添加到当前答案,您需要查看chaining

@movies = Movie.where(myfield: 10).order(:myfield)

您可以在ActiveRecord查询界面中调用各种方法,只需确保按正确的顺序排列它们,以便正确定义其范围。