Ruby on rails 尝试在Rails 3中使用新的活动记录查询接口时出错

Ruby on rails 尝试在Rails 3中使用新的活动记录查询接口时出错,ruby-on-rails,activerecord,ruby-on-rails-3,Ruby On Rails,Activerecord,Ruby On Rails 3,我正在尝试使用Rails 3 我的老式查询是 my_notes = Note.find(:all, :conditions => { :user_id => current_user.id, :date => p[:date] }, :order => "date ASC, created_at ASC") 在新的风格中,我认为应该是: my_notes = Note.find_all_by_user_id_and_date(current_user.id, p[:da

我正在尝试使用Rails 3

我的老式查询是

my_notes = Note.find(:all, :conditions => { :user_id => current_user.id, :date => p[:date] }, :order => "date ASC, created_at ASC")
在新的风格中,我认为应该是:

my_notes = Note.find_all_by_user_id_and_date(current_user.id, p[:date]).order('date ASC, created_at ASC')
但我得到了一个错误:

NoMethodError in NotesController#play
undefined method `order' for #<Array:0x00000103d23c38>
NotesController中的NoMethodError#play
未定义的方法“order”#
我做错了什么?感谢阅读。

按查找所有内容
不是新ARel语法的一部分。它立即执行查询并返回一个包含结果的数组。因为查询已经执行,所以不能再添加任何选项,如
order

请尝试以下方法:

Note.find.where(:user_id => current_user.id, :date => p[:date]).order('date ASC, created_at ASC')
find\u all\u by
不是新ARel语法的一部分。它立即执行查询并返回一个包含结果的数组。因为查询已经执行,所以不能再添加任何选项,如
order

请尝试以下方法:

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

新的查询界面的工作原理略有不同——
find\u all\u by\u user\u id\u和\u date
将返回一个结果数组,而
order
返回一个ActiveRecord::Relation对象,然后可以进一步确定其范围

一个有效的查询将是

my_notes = Note.order('date ASC, created_at ASC').find_all_by_user_id_and_date(current_user.id, p[:date])
但通常最好在查询中使用AREL语法:

my_notes = Note.where(:user_id => current_user.id, :date => p[:date]).order('date ASC, created_at ASC').all

新的查询界面的工作原理略有不同——
find\u all\u by\u user\u id\u和\u date
将返回一个结果数组,而
order
返回一个ActiveRecord::Relation对象,然后可以进一步确定其范围

一个有效的查询将是

my_notes = Note.order('date ASC, created_at ASC').find_all_by_user_id_and_date(current_user.id, p[:date])
但通常最好在查询中使用AREL语法:

my_notes = Note.where(:user_id => current_user.id, :date => p[:date]).order('date ASC, created_at ASC').all

@Ariejan在我发布我的答案的时候没有,你在我发布后添加了额外的信息。嘿,这是我首先说的!(虽然是简短的评论):)你们都解释得很好:+1。在我发布我的答案时,Ariejan没有,在我发布后,你添加了额外的信息。嘿,这是我首先说的!(尽管在简短的评论中):)你们都解释得很好:+1s。看来
find\u all
返回了一个数组。也许您可以切换到
where
?似乎
find\u all
返回一个数组。也许您可以切换到
,其中