2011-08-30 13 views
0

以下のRails 2コードをRails 3スコープに変換するには、.merge(:条件)を削除して、Rails 3のactiverecordスコープに移動しようとしています。Rails 2のハッシュマージをRails 3に変換するにはどうすればよいですか?

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]) 
+0

私の現在の呼び出しにマージする私のメソッドにopt = {}パラメータがあり、渡されたoptはby_address以外のものになります。 – rubies

答えて

1

あなたはそれらの鎖にスコープと新しいファインダメソッドを使用することができます。

class Customer < ActiveRecord::Base  
    scope :by_address, lambda {|address| {:conditions => {:address => address }} 
end 

Customer.by_address(@address).where("customer_name = ?", @customer.name)

は、このヘルプをしていますか?ドキュメントとRailscast about Active Recordをご覧ください。

関連する問題