我有以下课程:
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个参数。
那么我的代码有什么问题?
答案 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查询界面中调用各种方法,只需确保按正确的顺序排列它们,以便正确定义其范围。