1

のデフォルト値で設定された SQL Server のテーブルがありますuniqueidentifier not null

ActiveRecord が null 値をデータベースに送信するのは望ましくありませんが、送信すると、「null 値を null 以外の列に挿入できません」というエラーが発生します。

デフォルトを持つ列を送信せずに ActiveRecord を保存するにはどうすればよいですか? 私は本当にしたくない:

  1. 列を null 可能にします。
  2. Rails を使用して GUID を生成し、データベースに送信する
  3. クエリを手動で作成します。

2 つまたは 3 つのいずれかを実行できますが、これはプレーンな ActiveRecord/RoR で実行できる必要があるようです。

4

1 に答える 1

0

残念ながら、MySql で Rails を使用するとデフォルト (およびこの状況) が正しく処理されるため、これは Sql Server を使用する Rails の問題だと思います。他のオプションがあるかもしれませんが、おそらく最も速いのは、ActiveRecord クラスに before_create コールバックを追加し、そこに GUID を設定することです。

于 2013-01-17T18:46:11.773 に答える