2017-08-10 38 views
0

如何将数字指定为sql限制方法,以使限制实际上是所有记录。我想要有一个灵活的限制范围,例如scope :females, ->(n) {where(gender: 'Female').limit(n)。如何使用此范围指定所有记录?有没有比females(Model.all.count)更好的方法?为表中的所有记录生成sql限制查询

+1

我个人认为,如果你要通过限制,然后你可能也只是做'females.limit(7)因为它比女性(5)更清楚,更隐蔽。 –

回答

1

females(nil)没有限制条款适用。这是有效的,因为limit(nil)不适用于任何限制。

1

也许这会有所帮助:

scope :females, ->(n=nil) do 
    if n.present? 
    where(gender: 'Female').limit(n) 
    else 
    where(gender: 'Female') 
    end 
end 

然后:

Yourclass.females(10) #=> reuturn 10 female records 
Yourclass.females  #=> reuturn all female records 
+0

详细。 '范围:女性, - >(n = nil){where(gender:'Female')。limit(n)}'也可以工作 –