0

我是 ruby​​ 新手,有以下几点:

students = Student.all(:order => "score DESC",
            :limit => 5)

但是,我也想在其中添加一个 where 子句,但出现错误“未知键:位置”。我的student表引用了一个exam表 ( t.references :exam),它有一个date字段,所以我需要执行以下操作:

students = Student.all(:where => "exam.date='01/01/2012'",
                       :order => "score DESC",
                       :limit => 5)

如何where在方法中使用子句all并且是exam.date='01/01/2012'正确的?

4

2 回答 2

5

带参数的all方法是一个 pre-Rails 3 API,all(*args)等效于find(:all, *args),它采用以下:conditions选项:

students = Student.all(:conditions => "exam.date='01/01/2012'",
                       :order => "score DESC",
                       :limit => 5)

不过,通常首选使用 Rails 3 的可链接关系方法:

students = Student.where("exam.date='01/01/2012'").order('score DESC').limit(5)
于 2012-08-18T17:19:08.973 回答
1

你应该使用#where方法:

students = Students.where('exam.date = ?', '01/01/2012').all(order: 'score DESC', limit: 5)
于 2012-08-18T17:10:26.903 回答