2013-09-28 1 views
1

J'ai une méthode de recherche d'enregistrements Active Rails 3 et j'essaie de la mettre à jour pour les rails 4 patten.Rails 4 Méthode de recherche d'enregistrements active

Dans Rails 3, mon code ressemblait à ceci

StripeEvent.setup do 
    subscribe 'customer.subscription.deleted' do |event| 
    user = User.find_by_customer_id(event.data.object.customer) 
    user.expire 
    end 
end 

Dans Rails 4, je l'ai essayé cela, est-ce morceau de code correct?

StripeEvent.setup do 
    subscribe 'customer.subscription.deleted' do |event| 
    user = User.where(customer_id: (event.data.object.customer)) 
    user.expire 
    end 
end 

Répondre

1

Il ne sait pas pourquoi suis vous choisissez d'aller chercher des dossiers de cette façon quand vous pouvez faire

user = User.find_by_customer_id(event.data.object.customer) 
+0

Donc, les rails 4 supportent-ils toujours ce find_by_customer_id? – Benjamin

+0

Oui, les localisateurs basés sur les attributs dynamiques [http://api.rubyonrails.org/](http://api.rubyonrails.org/) sont toujours supportés. Vous pouvez utiliser soit le formulaire que j'ai mentionné ou le suivant User.find_by (customer_id: event.data.object.customer) –

+0

s'il vous plaît envisager d'accepter la réponse si vous êtes satisfait ou demander plus de détails –

-1

Le find_by_* est dépréciée.

Dans Rails 4, s'il vous plaît utiliser find_by comme ceci:

User.find_by(customer_id: event.data.object.customer) 

Vous pouvez en savoir plus sur Obsolète Finders dans ce grand blog: What's new in Active Record [Rails 4 Countdown to 2013] | The Remarkable Labs Blog. Ou passez en revue le cours Rails 4: Zombie Outlaws de CodeSchool.

+0

Ceci est incorrect. Les seuls trouveurs dépréciés sont 'find_all_by _...' 'find_last_by _...' 'find_or_create_by _...' 'find_or_initialize_by _...' 'scoped_by _...' – Mike