2011-08-30 3 views
0

Comment puis-je convertir le code Rails 2 en Rails 3 suivant, j'essaie de supprimer .merge (: conditions) et de passer entièrement à Rails 3 activeecord scope.Comment puis-je convertir Rails 2 hachage à 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

J'ai un paramètre opt = {} dans ma méthode, que je fusionne à mon appel actuel, l'opt passé peut être autre chose que by_address. – rubies

Répondre

1

Vous pouvez utiliser les champs d'application et de nouvelles méthodes de recherche pour les chaînes:

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

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

cette aide? Je vous recommande de regarder la documentation et le Railscast about Active Record.