最近、作業中のプロジェクトのコメント モデルに新しい「送信済み」属性を追加しました。移行では、次のような列を作成しましたadd_column :comments, :submitted, :boolean
。注:データベースには MySQL を使用しています。
この属性のデフォルト値を にしたかったので、次のようなメソッドfalse
を追加しました。before_create
before_create :default_values
def default_values
self.submitted = false
end
これは私には正しいように思えましたが、新しいコメントを追加しようとすると、何も起こらず、コンソールにエラーが表示されました。私の create メソッドは AJAX 経由で行われ、コントローラーは JS によってメソッドを正しく処理しましたが、何らかの理由でデフォルトformat html
で別のページにリダイレクトしようとしていました。
少し遊んだ後、default_values
メソッドを次のように変更しました。
def default_values
self.submitted = 0
end
その後、すべてがうまくいきました。これは、Railstinyint
がデータベースのブール フィールドに使用することと関係がありますか? false/true と 1/0 の間の変換を行うのに十分スマートだと思っていたでしょう。
興味深いことに、コンソールから新しいコメントを作成しようとしたところ、問題なくsubmitted
属性をに設定できfalse
ました。true/false 値の代わりに整数を使用しなければならない理由はありますか?