README.md in deep_pluck-0.1.1 vs README.md in deep_pluck-0.1.2
- old
+ new
@@ -25,9 +25,74 @@
$ gem install deep_pluck
## Usage
+### Similar to #pluck method
+```rb
+User.deep_pluck(:id, :name)
+# SELECT `users`.`id`, `users`.`name` FROM `users`
+# => [{'id' => 1, 'name' => 'David'}, {'id' => 2, 'name' => 'Jeremy'}]
+```
+
+### Pluck deep into associations
+```rb
+User.deep_pluck(:name, 'posts' => :title)
+# SELECT `users`.`id`, `users`.`name` FROM `users`
+# SELECT `posts`.`user_id`, `posts`.`title` FROM `posts` WHERE `posts`.`user_id` IN (1, 2)
+# => [
+# {'name' => 'David' , 'posts' => [{'title' => 'post1'}, {'title' => 'post2'}]},
+# {'name' => 'Jeremy', 'posts' => [{'title' => 'post3'}]}
+# ]
+```
+
+### DRY up Rails/ActiveRecord includes when using as_json
+
+Assume the following relations:
+
+> User has_many Posts.<br>
+> Post has_many PostComments.<br>
+> User has_one Contact.<br>
+
+And the following #as_json example:
+```rb
+User.where(:name => %w(Pearl Kathenrie)).includes([{:posts => :post_comments}, :contact]).as_json({
+ :root => false,
+ :only => [:name, :email],
+ :include => {
+ 'posts' => {
+ :only => :name,
+ :include => {
+ 'post_comments' => {
+ :only => :comment,
+ },
+ },
+ },
+ 'contact' => {
+ :only => :address,
+ },
+ },
+})
+
+```
+You could refactor it with #deep_pluck like:
+```rb
+User.where(:name => %w(Pearl Kathenrie)).deep_pluck(
+ :name,
+ :email,
+ 'posts' => [:name, 'post_comments' => :comment],
+ 'contact' => :address,
+)
+```
+
+### Better Performance
+
+#deep_pluck return raw hash data without loading a bunch of records.
+
+In that faster than #as_json, or #select.
+
+Will add some benchmarks soon :)
+
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.