Understanding rails migration statement (:null => false)

migration, ruby-on-rails-3

Solution

Edit: I had taken the question to be about syntax and translation since it originally mentioned CoffeeScript. For purpose, refer to Peter Bloom's answer.

I am not sure what the `:null => false` means exactly.

The `=>` operator is a key/value separator in Ruby, defining a `Hash` with a `:null` key set to `false`. It's similar to `:` for an `Object` literal in CoffeeScript/JavaScript -- `{ null: false }`.

When used in an argument list, it's one option for allowing/imitating named arguments in Ruby.

The other main difference is that CoffeeScript/JavaScript use `String`s for keys while Ruby typically uses Symbols -- `"null"` (cs/js) vs. `:null` (rb).

So, the syntactic equivalent in CoffeeScript would be:

x.datetime "new",     null: false
x.datetime "update",  null: false

In JavaScript, that's:

x.datetime("new",    { null: false });
x.datetime("update", { null: false });

Problem

I am trying to understand the following statement, it is from a rails migration file: ``` x.datetime "new", :null => false x.datetime "update", :null => false ``` I understand the the first part of both statements (everything before the comma) but I am unsure on the null portion ``` :null => false ``` Is this basically saying "if it does not exist, then it is false?" The logic just seems a bit strange, any clarification on this would be greatly helpful.

Original source