我有一個用戶數據庫,它有公司列,它可以是空的,即空值或可能包含一些值。但是,如果包含任何價值,它應該是唯一的。如果我在我的模型中使用唯一屬性,則不允許爲該列提供多個空值。我正在使用Sqlite3數據庫。對不包含空值的列的唯一約束
-1
A
回答
0
您可以使用模型驗證來處理它。也許是這樣的:
class User < ActiveRecord::Base
attr_accessible :company
validate do
if self.company && User.where(company: self.company).first
raise ArgumentError, "Company must be `nil` or unique"
end
end
end
這是一個黑客,但它應該適合您的需求。
+0
'User.where(company:self.company).exists?'可能比'first'更好。 –
+0
如果我爲此創建了一個函數,並且我希望每次創建新用戶時都運行該函數。那麼怎麼做呢? –
+0
每次創建或更新'用戶'時都會運行「驗證」,因此不需要爲其創建單獨的方法。 – Eugene
相關問題
- 1. 唯一約束列只能包含一個NULL值
- 2. 唯一約束,但不包括NULL值
- 3. 可空列的唯一約束
- 4. 如何在包含空值的列上添加非空約束
- 5. 唯一約束值
- 6. MySQL對於唯一值的約束
- 7. PSQL對兩列的唯一約束
- 8. 無法啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值。
- 9. 無法啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值
- 10. 唯一約束在NON-NULL列上的唯一約束
- 11. 唯一性約束導致與空值
- 12. 「不包含」約束?
- 13. PostgreSQL的唯一約束不夠唯一
- 14. 對重複KEY:多列唯一約束
- 15. SQL約束:非唯一列中的唯一值
- 16. 多列唯一約束
- 17. 添加唯一約束列
- 18. 多列唯一約束
- 19. 兩列唯一約束ActiveAndroid
- 20. DB2 - 唯一約束多列
- 21. 唯一約束外鍵列
- 22. 唯一約束
- 23. 具有不可互換值的多列的唯一約束
- 24. 唯一在一起的約束,包括特定的字段值
- 25. 唯一約束允許空的一列中的Oracle
- 26. 定義值的唯一約束
- 27. 唯一對約束的觸發器
- 28. Cassandra - 對行鍵的唯一約束
- 29. Symfony2多對多的唯一約束
- 30. 唯一約束 - 這些列當前沒有唯一值..?
重複:http://stackoverflow.com/questions/191421/how-to-create-a-unique-index-on-a-null-column – forker
我怎麼能在軌道上做紅寶石? –