Ruby 如何将Rails 2哈希合并转换为Rails 3?

Ruby 如何将Rails 2哈希合并转换为Rails 3?,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,如何将下面的Rails2代码转换为Rails3范围,我正在尝试删除.merge(:conditions)并完全移动到Rails3ActiveRecord范围 class Customer < ActiveRecord::Base def self.find_invoice_by_customer(customer_address, opts={}) invoice = Customer.find(opts.merge(:conditions => {:address =&

如何将下面的Rails2代码转换为Rails3范围,我正在尝试删除.merge(:conditions)并完全移动到Rails3ActiveRecord范围

class Customer < ActiveRecord::Base
  def self.find_invoice_by_customer(customer_address, opts={})
    invoice = Customer.find(opts.merge(:conditions => {:address => customer_address }))
  end
end

Customer.find_invoice_by_customer(@address, :condition => ["customer_name = ?", @customer.name])
class客户{:address=>Customer\u address}))
结束
结束
客户。按客户查找发票(@address,:condition=>[“Customer\u name=?”,@Customer.name])

您可以使用作用域和新的查找器方法来链接它们:

class Customer < ActiveRecord::Base    
  scope :by_address, lambda {|address| {:conditions => {:address => address }}
end
class客户{:地址=>地址}
结束
Customer.by\u address(@address)。其中(“Customer\u name=?”,@Customer.name)


这有帮助吗?我建议您看一下文档和。

我的方法中有一个opt={}参数,我将它合并到当前调用中,传递的opt可以是除by_地址之外的任何内容。