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做到這一點是另一個問題。 –