1
validates :uniqueness => true
是保存模型之前強制執行唯一性的快速有效方法。如何檢查Ruby on Rails中現有數據的唯一性?
有沒有簡單的方法來檢查現有數據的唯一性?遍歷每個項目並將其與其他項目比較看起來如此笨拙......
validates :uniqueness => true
是保存模型之前強制執行唯一性的快速有效方法。如何檢查Ruby on Rails中現有數據的唯一性?
有沒有簡單的方法來檢查現有數據的唯一性?遍歷每個項目並將其與其他項目比較看起來如此笨拙......
我經常用直接SQL做這個 - 但這裏有一個Rails(版本3,使用arel)的方法 - 使用組操作和得到你想要的領域的數量。
例如如果我有一大堆的活動 - 我希望得到事件的計數具有唯一標題:
Event.group(:title).count
返回標題,發現計數的的ActiveSupport :: OrderedHash。然後,您可以在散列上執行select以過濾出圖塊列表。例如
Event.group(:title).count.select{|title,count| count >= 2}
這給了你,你可以回去做的東西,發現每刪除一個標題等
你也可以做一個"having" operation(這是我在原始的SQL做的),例如
Event.group(:title).having('count(title) >= 2')
是:
SELECT `events`.* FROM `events` GROUP BY title HAVING count(title) >= 2
在SQL
有關的好處是你可以枚舉,而不必返回到數據庫,並刪除項目的完整對象列表
,打印時間戳,不管。
在控制檯中看起來有點困難,因爲全部記錄已加載,而不僅僅是標題和計數的散列。