Your SlideShare is downloading. ×
MetaWhere at the Ruby Drink-up of Sophia, October 2011
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MetaWhere at the Ruby Drink-up of Sophia, October 2011

666
views

Published on

ActiveRecord query syntax on steroids. …

ActiveRecord query syntax on steroids.
Presented at the Ruby Drink-up of Sophia Antipolis on the 4th of October 2011 by Pierre Schambacher (@PierreSchambac).

http://rivierarb.fr/2011/10/04/Drinkup/

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
666
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MetaWhereStéroïdes pour ActiveRecord
  • 2. Exemple de modèle User AccountCategory Post Comment
  • 3. Quel problème ?
  • 4. Quel problème ?Je veux les Posts d’aujourd’hui
  • 5. Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)
  • 6. Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)Je veux les Posts des 7 derniers jours
  • 7. Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)Je veux les Posts des 7 derniers joursPost.where(“date >= #{Date.today - 1.week}“)
  • 8. Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)Je veux les Posts des 7 derniers joursPost.where(“date >= #{Date.today - 1.week}“)
  • 9. Quel problème ?
  • 10. Quel problème ?Posts de User#42 ou de User#1337
  • 11. Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)
  • 12. Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)
  • 13. Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)Posts des utilisateurs ayant un compte créé il ya plus de 3 mois
  • 14. Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)Posts des utilisateurs ayant un compte créé il ya plus de 3 moisPost.joins(:something).where(“...“)
  • 15. Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)Posts des utilisateurs ayant un compte créé il ya plus de 3 moisPost.joins(:something).where(“...“)
  • 16. Utiliser ActiveRecord => écrire du SQL
  • 17. Utiliser ActiveRecord => écrire du SQL
  • 18. MetaWherehttp://erniemiller.org/projects/metawhere/https://github.com/ernie/meta_wherehttps://github.com/ernie/squeel
  • 19. Méthodes sur les Symbols Post.where(:date.gte => Date.today-1.week) Comment.where(:rating.ne => nil) Category.where(:name.in => [‘Ruby’, ‘Rails’])
  • 20. Surcharge du | pour Hash Post.where({:user_id => 42} | {:user_id => 1337}) User.where({:name.ne => ‘Bob’} | {:admin => true})
  • 21. Simplification du joins
  • 22. Simplification du joinsJoins avec ActiveRecord ?
  • 23. Simplification du joinsJoins avec ActiveRecord ?
  • 24. Simplification du joinsJoins avec ActiveRecord ?MetaWhere:Post.joins(:user => :accounts).where(:user => { :accounts => { :created_at.lte => Date.today - 3.months }})
  • 25. Plus loin !Surcharge des opérateurs :date >= Date.today :value ^ nilMéthodes pour order et joins également joins(:accounts.outer) order(:created_at.desc)
  • 26. Amusons nousComment .joins( :post => [:categories, :user]) where(:post => {:categories => :name.in => [‘A’, ‘B’]}) where(:post => {:user => {:created_at.lte => Date.yesterday}}) where({:rating => 5} | {:rating => 0})
  • 27. MetaWhereMerci de votre attention. Questions ?

×