0
我有以下模型级别的唯一性约束,需要将其移至MySQL级别。什么是SQL语句相同。条件唯一性约束Ruby on rails
class Blog < ActiveRecord::Base
validate :uniqness_of_title
def uniqness_of_title
blog = Blog.where("title=? and lock_version<>-1", self.title).last
self.errors.add :base, "Title already exists." if blog
end
end
,它应该允许让进入“博客”表,即使标题已经具有lock_version记录存在= -1。
我也需要验证lock_version列。如果博客标题存在lock_version = -1。它应该允许进入。 –
我不认为你可以做到这一点与MySQL约束(意见是由http://stackoverflow.com/questions/987099/unique-constraint-with-conditions-in-mysql备份)。就个人而言,我会在模型中留下诸如此类的业务逻辑条件。 – born4new
@ born4new唯一性*只能*由数据库保证。如果您有3个Rails应用程序服务器,则可以同时执行3个模型级别的检查,不会找到具有该标题的现有检查,并且所有这些都会创建一个新的检查。如何最好的与MySQL做到这一点是另一个问题。 –