尝试在Rails 3中使用新的Active Record Query Interface时出错

ben*_*ben 1 activerecord ruby-on-rails ruby-on-rails-3

我正在尝试使用的Rails 3 Active Record Query Interface.

我的旧式查询是

my_notes = Note.find(:all, :conditions => { :user_id => current_user.id, :date => p[:date] }, :order => "date ASC, created_at ASC")
Run Code Online (Sandbox Code Playgroud)

在新风格中,我认为它将是:

my_notes = Note.find_all_by_user_id_and_date(current_user.id, p[:date]).order('date ASC, created_at ASC')
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

NoMethodError in NotesController#play
undefined method `order' for #<Array:0x00000103d23c38>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢阅读.

Ari*_*jan 6

find_all_by_<attritubte>不是新ARel语法的一部分.它立即执行查询并返回带有结果的数组.由于查询已经执行,因此您无法再添加任何选项order.

试试这个:

Note.find.where(:user_id => current_user.id, :date => p[:date]).order('date ASC, created_at ASC')
Run Code Online (Sandbox Code Playgroud)