注 :おそらくbrcebn's を見たいと思うでしょう。 より新しいバージョンのRailsを使用している場合は答えてください。
Railsはこれを解釈しようとします:
t.string :uniqueid, default: md5(random()::text)
Rubyコードおよび:default => md5(...)として Rubyでは何の意味もありません。引用すると、Railsはそれを文字列と見なし、 uniqueidのデフォルト値を作成します。 文字列'md5(random()::text)' それは役に立ちません。
列のデフォルトで関数呼び出しを使用する場合は、テーブルの変更
手作業:
connection.execute(%q{
alter table your_table alter column uniqueid set default md5(random()::text)
})
これにより、データベースに必要なデフォルトが取得されますが、 schema.rbに新しいデフォルトについての言及がないことに気付くかもしれません。 。使用可能なスキーマが必要な場合は、代わりにSQLスキーマを使用する必要があります。 code> application.rb
:
config.active_record.schema_format = :sql
次に、 schema.rbを削除します structure.sqlを使用します 代わりは。 SQLスキーマダンプは3.2まで壊れていて、さまざまなRailsバージョンでスキーマの読み込みに問題があることに注意してください(ただし、いつでも psql
ところで、本当にSHAが必要な場合は、<を参照してください。 code>ダイジェスト pgcryptoの関数
。