我想通過給定的重複次數驗證唯一性,例如允許三個具有相同名稱的用戶。Rails驗證重複的唯一性
User id: 1, name: "user"
User id: 2, name: "user"
User id: 3, name: "user"
但是,您不能創建具有相同名稱的第四個用戶。我該怎麼辦:
- 用params創建validates_uniqueness_of?
- 或者創建自定義驗證?
我將不勝感激例子。
我想通過給定的重複次數驗證唯一性,例如允許三個具有相同名稱的用戶。Rails驗證重複的唯一性
User id: 1, name: "user"
User id: 2, name: "user"
User id: 3, name: "user"
但是,您不能創建具有相同名稱的第四個用戶。我該怎麼辦:
我將不勝感激例子。
你需要一個自定義的驗證,如
validates :validate_three_maximum
def validate_three_maximum
if User.where(:name => "user").count >= 3 && (new_record? || name_changed?)
errors.add(:name, "Maximum of 3 with this name")
end
end
要知道,在你的應用程序數據庫唯一性檢查是容易出現競爭情況:見Concurrency and Integrity。
編輯:添加new_record? + name_changed?檢查更新記錄不會計入3.
我認爲你必須圍繞'id'循環,並檢查該用戶名的存在數量,並確認像'exists == 3'類似的東西那。 – uday 2012-02-19 06:00:23