This week in Rails: tokens migrations, method_source and more

Live from our servers, it’s This Week in Rails!

As always we’re your inside scoop of interesting commits, pull requests and more from Rails.

This is Kasper, and I’m ready to serve you this scoop. I tapped keys on the board in front of me to make words appear. It’s quite the tapestry.

Let’s get to it!

This week’s Rails contributors

33 contributors made this week happen. Pull Requests were merged, new friendships were made… I think I even heard someone say they saw a cat online. That’s a rare sight, and part of what made this week special. Thanks everyone!

Tokens in migrations and model generators

As a follow up to last week’s has_secure_token, both the migration and model generators can create token attributes.
rails g migration add_auth_token_to_users auth_token:token. rails g model user auth_token:token.
The model generator automatically adds has_secure_token :auth_token to your new model file.

New Stuff

method_source added to the default Gemfile

On Rails 5 when you generate a new app, you’ll find ‘method_source’ in your Gemfile. This gem extends the Method class with source and comment methods to aid your debugging. There’s a good usage example in this comment.


Allow ‘1’ or true for acceptance validation

Previously validates_acceptance_of would only accept ‘1’ as a valid attribute value. Now you can assign true to an attribute and the validation will pass.

Time columns will be aware of application time zone

In Rails 5.1 your time columns will adhere to the time zone of your Rails application. To make the upgrade path smoother, the config.active_record.time_zone_aware_types option has been added. See the deprecation warning here for help.

One More Thing™

Validation callbacks tested with contexts

A feature you might not have heard about is validation contexts, which allow you to specify a context a callback should only be run for. Like this: before_validation callback, on: :create. The link shows a few tests being for this on before/after_validation. Here is a more advanced example.

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!