Ruby on rails 3 Rails 3-合并查询选项

Ruby on rails 3 Rails 3-合并查询选项,ruby-on-rails-3,merge,options,Ruby On Rails 3,Merge,Options,我将此方法用于Rails 2.3.4应用程序: def self.find_all_colored(query, options={}) finder_options = {:conditions => "color = #{query}"}.merge(options) Car.find(:all, finder_options) end 我可以这样做: Car.find_all_colored("red", :limit => 5) 但是,我在Rails 3.1.1中

我将此方法用于Rails 2.3.4应用程序:

def self.find_all_colored(query, options={})
  finder_options = {:conditions => "color = #{query}"}.merge(options)
  Car.find(:all, finder_options)
end
我可以这样做:

Car.find_all_colored("red", :limit => 5)
但是,我在Rails 3.1.1中尝试实现这一点时遇到了一个非常困难的时刻,现在我可以让它工作了,但是没有.merge(选项),如果我添加了该部分:

def self.find_all_colored(query, options={})
  Car.where("color = #{query}").merge(options)
end
我得到这个错误:

undefined method `default_scoped?' for {:limit=>5}:Hash
我已经在stackoverflow.com上搜索过了,但是运气不好…谢谢

尝试以下操作:

def self.find_all_colored(query, options={})
  self.all({:conditions => {:color => query}}.merge(options))
end

很抱歉,Gazler,在查看生成的SQL时,它实际上不起作用,选项不包括在内。您是否使用Rails 3.1?我在rails 3应用程序上进行测试。谢谢盖兹勒的回复。是的,我们正在将2.3.4应用程序升级到3.1.1。在您发布的链接中:“简言之,将包含以下内容的选项散列传递到ActiveRecord提供的任何类方法:conditions、:include、:joins、:limit、:offset、:order、:select、:readonly、:group、:having、:From、:lock,现在不推荐使用了。”就是这样!非常感谢你的时间Gazler你应该得到一块饼干。