Created
February 19, 2009 12:30
-
-
Save fdutey/66897 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
posts = Post.all #=> 3 posts, 2 publiés, un non | |
#indique si TOUS les éléments d'un enumerable obéissent à une condition passée sous forme de bloc | |
posts.all?{ |post| post.published? } #=> false | |
#indique si au moins 1 élement de la collection obéit à une condition passée sous forme de bloc | |
posts.any?{ |post| post.published? } #=> true | |
#renvoie un tableau contenant la valeur renvoyée par un bloc pour chaque élément de la collection | |
posts.collect{ |post| post.published? } #=> [true, true, false] | |
posts.map{ |post| post.published? } #=> [true, true, false] | |
#retourne le premier element de la collection qui satisfait la condition passée sous forme de bloc | |
posts.detect{ |post| post.published? } #=> #<Post ...> | |
posts.find{ |post| post.published? } #=> #<Post ...> | |
#très pratique pour éviter de faire un for comme à l'ancien temps, avec les langages diaboliques | |
posts.each_with_index do |post, index| | |
post.update_attribute(:position, index + 1) #=> pratique pour la réception d'un drag & drop par exemple | |
end | |
#renvoie un tableau contenant la liste de tous les items satisfaisant la conditions passée sous forme de bloc | |
posts.find_all{ |post| post.published? } #=> [#<Post ...>, #<Post ...>] | |
posts.select{ |post| post.published? } #=> [#<Post ...>, #<Post ...>] | |
#indique si une collection contient un élément précis | |
posts.include?(Post.find(1)) #=> true | |
posts.member?(Post.find(1)) #=> true | |
#insère dans un accumulateur le résultat d'un block appliqué sur chaque élément d'une collection | |
(1..3).inject(0){ |total, number| total + number } #=> 6 | |
posts.inject([]){ |memo, post| memo << post.published? } #=> [true, true, false] | |
#extrait la valeur minimum / maximum d'un tableau | |
#par défaut, la méthode de comparaison utilisée est <=> mais vous pouvez donner un bloc pour en utiliser une autre | |
#Il peut être intéressant de définir la méthod <=> dans vos objets ActiveRecord pour avoir un ordre de tri par défaut | |
posts.min{ |post_1, post_2| post_1.created_at <=> post_2.created_at } #=> #<Post ...> | |
posts.max{ |post_1, post_2| post_1.created_at <=> post_2.created_at } #=> #<Post ...> | |
#Inverse de select, renvoie un tableau contenant la liste des objets pour lesquels la condition passée sous forme de bloc est fausse | |
posts.reject{ |post| post.published? } #=> [#<Post ...>] | |
#ordonne les élements d'une collection | |
#par défaut la méthode de comparaison utilisée est <=> mais vous pouvez donner un bloc pour en utiliser une autre | |
posts.sort #=> [#<Post...>, #<Post ...>, #<Post ...>] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment