0
我有幾個字段和唯一約束的DataMapper的對象。實際上,這確保了每個日期代碼的每個用戶ID只能創建一條記錄。DataMapper的唯一約束和偏執刪除
class Form
include Datamapper::Resource
property :id, Serial
property :username, String, :required => true, :index => true
property :termcode, Integer, :required => true
property :status, Enum[:draft, :review, :approved, :denied], :default => :draft
...
property :deleted_at, ParanoidDateTime
# only one record per user per term code
validates_uniqueness_of :username, :scope => [:termcode], :unless => lambda{|r| r.status == :draft }
end
問題是,如果我利用偏執刪除功能,唯一性約束將阻止使用相同數據創建附加記錄。例如,如果Sue爲「2015」術語代碼創建記錄並將其刪除,則無法使用相同的術語代碼創建新記錄,因爲偏執功能會將原始記錄保留在數據庫中。
這個模型爲必填項數據完整性的目的,而且在許多情況下,進行索引以及排序和更好的查詢優化。
我如何利用安全的缺失也讓用戶輸入更多的記錄,但告訴了唯一約束忽略刪除的文件?