Skip to content

Rails5 tips #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ Being impressed with the awesomeness of jstip repository, I came up with the ide
Please feel free to send us a pull request with your Rails tip to be published here. Any improvements or suggestions are more than welcome!

# Tips list
- 31 - [Remove ambiguous column issue in rails 5](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-11-31-Ambiguous_column_in_select_and_group_fix_in_rails5.md)
- 30 - [Remove nil from hash in rails 5](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-11-26-Remove_nil_from_hash.md)
- 29 - [Retrieving the ids of the has_many or has_many_through relationships](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-03-29-Retrieving_ids_from_relationship.md)
- 28 - [Support for left outer join in rails 5](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-03-10-left_outer_join_in_Rails_5.md)
- 27 - [Render partial from cache faster](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-03-09-rendering_partial_from_cache_faster.md)
- 26 - [Increase productivity with console tricks](https://github.com/logeshmallow/rails_tips/blob/master/rails_tip/2016-03-08-Increase_productivity_with_few_tricks.md)
Expand Down
25 changes: 25 additions & 0 deletions rails_tip/2016-11-26-Remove_nil_from_hash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: Remove nil from hash using Hash#compact and Hash#compact!
tip-number: 30
tip-username: Logesh
tip-username-profile: https://github.com/logeshmallow
tip-description: We always had an issue when we send hash with nil value and now here is the option in ruby 2.4 to remove the nil using Hash#compact and Hash#compact!

---




We all would have faced removing nil value from array and hash and we had compact for removing nil from array and now in ruby 2.4, we also have option to remove it from hash

```ruby

hash = { "username" => "logesh", "company" => nil}
hash.compact #=> { "username" => "logesh" }
hash #=> { "username" => "logesh", "company" => nil}

hash.compact! #=> { "username" => "logesh" }
hash #=> { "username" => "logesh" }
```

Since this comes with ruby itself, we even don't need rails to use this.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: Removing ambiguous column issue in rails 5
tip-number: 31
tip-username: Logesh
tip-username-profile: https://github.com/logeshmallow
tip-description: Whenever we have columns with same name in two table and query it, we face ambiguous column issue in select and group by and rails5 fixes it now

---


```ruby

users(:id, :name)
posts(:id, :title, :user_id)
comments(:id, :description, :user_id, :post_id)

>> Post.joins(:comments).group(:user_id).count
Mysql2::Error: Column 'user_id' in field list is ambiguous: SELECT COUNT(*) AS count_all, user_id AS user_id FROM `posts` INNER JOIN `comments` ON `comments`.`post_id` = `posts`.`id` GROUP BY user_id


users(:id, :name)
posts(:id, :title, :user_id)
comments(:id, :description, :user_id, :post_id)

>> Post.joins(:comments).group(:user_id).count
SELECT COUNT(*) AS count_all, "posts"."user_id" AS posts_user_id FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "posts"."id" GROUP BY "posts"."user_id"

=> { 1 => 1 }

```

This shows that now both projection and Group By are prepended with the posts table name and hence fixing the conflict.