我正在使用连接到 SQLite 后端的 DataMapper。我需要在我的四个 belongs_to 列中创建一个唯一索引。这是桌子。
class Score
include DataMapper::Resource
property :id, Serial
property :score, Integer
belongs_to :pageant
belongs_to :candidate
belongs_to :category
belongs_to :judge
#What we want is a UNIQUE INDEX on the four properties!
end
我做过的事情:
- 通过类似:unique_index => :single_score 的四个唯一索引。这仅在您已经包含属性时才有效。
- validates_uniqueness_of,我认为该范围仅适用于 2 列唯一索引。
- 我目前的解决方案是创建一个虚拟字段“dont_mind_me”,这样我就可以将 :unique_index => single_score 放入其中,一切正常。这是可以做的事情吗?
- 使用原始 SQL 创建索引,SQLite 支持四个字段之间的唯一索引。
这个问题基本上有两个部分:
- 我的解决方案可以吗,还是我应该找到另一个解决方案?即使使用原始 SQL,我也无法处理看似微不足道的事情
- 如何在 DataMapper 中创建“after_create_table”挂钩?文档中的钩子只讲述了 CRUD 后的数据。