5

私は次のステートメントを理解しようとしています。これはRails移行ファイルからのものです。

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

両方のステートメントの最初の部分(コンマの前のすべて)は理解していますが、null部分についてはわかりません

:null => false

これは基本的に「存在しないのなら間違っている」ということですか?ロジックは少し奇妙に思えますが、これを明確にすると非常に役立ちます。

4

3 に答える 3

23

:null => falseRails 移行では、NULL 値を受け入れないようにデータベースに指示します。:default => 0(a) クエリで NULL または何も指定されていない場合、または (b) オブジェクトを作成または更新する場合に、デフォルト値として '0' を使用するようにデータベースに指示するために使用できます。('0' と NULL は同じものではないことに注意してください。)

于 2013-05-16T22:09:24.780 に答える
2

編集:最初に CoffeeScript について言及されていたので、質問は構文と翻訳に関するものであると考えていました。目的については、Peter Bloom の回答を参照してください。


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

演算子は、Rubyの=>キーと値の区切り記号でHashあり、:nullキーを に設定してを定義しfalseます。これは、CoffeeScript/JavaScript:のリテラルの -- に似ています。Object{ null: false }

引数リストで使用すると、Ruby で名前付き引数を許可/模倣するための 1 つのオプションになります。

その他の主な違いは、CoffeeScript/JavaScript ではStringキーに s を使用するのに対し、Ruby では通常シンボル( "null"cs/js) と:null(rb) を使用することです。

したがって、CoffeeScript で同等の構文は次のようになります。

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

JavaScript では、次のようになります。

x.datetime("new",    { null: false });
x.datetime("update", { null: false });
于 2013-03-12T18:53:57.713 に答える