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
有关的好处是你可以枚举,而不必返回到数据库,并删除项目的完整对象列表
,打印时间戳,不管。
在控制台中看起来有点困难,因为全部记录已加载,而不仅仅是标题和计数的散列。