sqlite3にはuuidの処理がないので、私はそれを自分で生成しようとしました。sqlite3のrails5のidモデルのlambda uuid generator
多くの他の記事はこれに私を導いた:実際には罰金あなたがUser.create ...
を行う際id
フィールドにデフォルトのランダムなUUIDを生成します
create_table :users, id: false do |t|
t.string :id, :primary_key => true, null: false, default: -> { "(lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6))))" }
...
end
を。
しかし、あなたは私がNew User
リンクを押すと(デフォルトはビューを生成を経由して)実際に私のコントローラで私の場合である、User.new
を行うとき、私は持っている:new_user_lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6)))
id
値で
- フォームのオプションを
form_for @user, html: {id: "new_user"}
として修正すると、フォームを送信するとhttp://localhost:3000/accounts/lower(hex(randomblob(4)))%20%7C%7C%20'-'%20%7C%7C%20lower(hex(randomblob(2)))%20%7C%7C%20'-4'%20%7C%7C%20substr(lower(hex(randomblob(2))),2)%20%7C%7C%20'-'%20%7C%7C%20substr('89ab',abs(random())%20%25%204%20+%201,%201)%20%7C%7C%20substr(lower(hex(randomblob(2))),2)%20%7C%7C%20'-'%20%7C%7C%20lower(hex(randomblob(6)))
にリダイレクトされます。
User.new
で行われた場合は、フィールドid
の値と思われます。
だから私は、それがSecureRandom
または類似のものと同じように、new
を介して作成されたときにid
フィールドのデフォルト値を生成する方法があるかどうかを知りたいです。