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

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

on

  • 826 views

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/

Statistics

Views

Total Views
826
Slideshare-icon Views on SlideShare
823
Embed Views
3

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 3

http://www.hanrss.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • MetaWhereStéroïdes pour ActiveRecord
    • Exemple de modèle User AccountCategory Post Comment
    • Quel problème ?
    • Quel problème ?Je veux les Posts d’aujourd’hui
    • Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)
    • Quel problème ?Je veux les Posts d’aujourd’huiPost.where(:date => Date.today)Je veux les Posts des 7 derniers jours
    • 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}“)
    • 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}“)
    • Quel problème ?
    • Quel problème ?Posts de User#42 ou de User#1337
    • Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)
    • Quel problème ?Posts de User#42 ou de User#1337Post.where(“user_id = 42 OR user_id = 1337“)
    • 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
    • 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(“...“)
    • 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(“...“)
    • Utiliser ActiveRecord => écrire du SQL
    • Utiliser ActiveRecord => écrire du SQL
    • MetaWherehttp://erniemiller.org/projects/metawhere/https://github.com/ernie/meta_wherehttps://github.com/ernie/squeel
    • Méthodes sur les Symbols Post.where(:date.gte => Date.today-1.week) Comment.where(:rating.ne => nil) Category.where(:name.in => [‘Ruby’, ‘Rails’])
    • Surcharge du | pour Hash Post.where({:user_id => 42} | {:user_id => 1337}) User.where({:name.ne => ‘Bob’} | {:admin => true})
    • Simplification du joins
    • Simplification du joinsJoins avec ActiveRecord ?
    • Simplification du joinsJoins avec ActiveRecord ?
    • Simplification du joinsJoins avec ActiveRecord ?MetaWhere:Post.joins(:user => :accounts).where(:user => { :accounts => { :created_at.lte => Date.today - 3.months }})
    • Plus loin !Surcharge des opérateurs :date >= Date.today :value ^ nilMéthodes pour order et joins également joins(:accounts.outer) order(:created_at.desc)
    • 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})
    • MetaWhereMerci de votre attention. Questions ?