在Sequel中處理來自模型的異常的正確方法是什麼?特別是我遇到的事情是當唯一的約束被應用到登錄。在這種情況下,異常似乎來自SQLite本身,而不是Sequel,這意味着它不會被「錯誤」處理。Ruby Sinatra +續集約束錯誤處理
這是試圖建立一個用戶與「非唯一」登錄後,我發現了錯誤:
Sequel::DatabaseError at /user/create
SQLite3::ConstraintException: column login is not unique
file: database.rb location: close line: 97
這裏是我的縮寫代碼:
require 'sinatra'
require 'sequel'
DB.create_table :users do
primary_key :id
String :login, :key => true, :length => (3..40), :required => true, :unique => true
String :hashed_password, :required => true
String :salt
DateTime :created_at, :default => DateTime.now
end
class User < Sequel::Model
# password authentication code
end
get '/user/create' do
slim :user_create
end
post '/user/create' do
user = User.new
user.login = params['login']
user.password = params['password']
if user.save
'User created'
else
tmp = []
user.errors.each do |e|
tmp << (e.join('<br/>'))
end
tmp
end
end
啊,謝謝,我錯過了在文檔中 –