2013-03-12 6 views
5

を私は次の文を理解しようとしています、それはレールの移行ファイルからですカンマ)ですが、ヌル部分がわかりませんは、移行声明をレール(:ヌル=> false)を:私は前に両方のステートメント(すべての最初の部分を理解</p> <pre><code>x.datetime "new", :null => false x.datetime "update", :null => false </code></pre> <p>

:null => false 

これは基本的に「存在しない場合は偽ですか?論理はちょっと変わっているようですが、これを明確にすることは大いに役立ちます。

+0

これは単なるハッシュ引数です。 –

+4

@DaveNewton:OPが引用文を読むことができない場合、彼はそのコメントを理解することはほとんどありません。 –

+1

まあ、 '=> false'は[bound](http://coffeescript.org/#fat-arrow)' function(){falseを返します。 } '。しかし、 ':null'は構文エラーです。代わりに 'null:'であれば、 'Object'のキー(http://coffeescript.org/#objects_and_arrays)になります。 –

答えて

2

編集:それはoriginally mentioned CoffeeScript以来、私は文法と翻訳についての質問をしていました。目的はPeter Bloom's answerを参照してください。


私は:null => falseが正確に何を意味するのかわかりません。

=>

オペレータがfalse:nullキーセットとHashを定義する、Rubyでキー/値の区切りです。 CoffeeScript/JavaScript - { null: false }では、のObjectリテラルに似ています。

引数リストで使用すると、Rubyで名前付き引数を許可/擬似するための1つのオプションです。 "null"(CS/JS)対:null(RB) -

他の主な違いは、Rubyは、典型的には、Symbolsを使用しながらのCoffeeScript/JavaScriptがキーのString Sを使用することです。

ので、CoffeeScriptの中構文の等価は次のようになります。

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

、それはです:Railsのマイグレーションで

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

[答え](http://stackoverflow.com/a/16598317/2909897)これは私の質問に適切な文脈で答えました。 – mbigras

19

:null => false NULL値を受け入れないデータベースを伝えます。クエリーでNULLまたは何も指定されていない場合、または(b)オブジェクトの作成または更新時にデフォルト値として '0'を使用するようデータベースに指示するには、:default => 0と一緒に使用できます。

2

最初に、xを使用するのではなく、マイグレーションに使用される標準のtという変数を使用したいと思います。

にあるtオブジェクトは、実際にはActiveRecord::ConnectionAdapters::TableDefinitionのマイグレーションファイル内にあります。

そして、

t.datetime "new", :null => false 
t.datetime "update", :null => false 

は実際に最後の引数はcolumnメソッドのオプション引数である

t.column("new", :datetime, { :null => false }) 
t.column("update", :datetime, { :null => false }) 

に変換されます。

documentationによれば、これらのオプションの1つは:nullで、列のNULL値を許可または禁止します。

したがって、要約では、:null => falseは「新しい列または更新列にNULL値を許可しない」を意味します。

関連する問題

 関連する問題